You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python合并货币DataFrame遇NaN异常,求正确合并方案

解决DataFrame合并时列错位/NaN的问题

问题根源

你遇到的问题主要来自两个细节:

  1. 用df + df2运算时,两个DataFrame的列名完全不重合(一个是AUD,一个是BRL),Pandas无法找到对应列做数值运算,因此所有结果返回NaN。
  2. 使用pd.concat([df,df2])时,默认是按行拼接(axis=0),两个DataFrame会上下堆叠,自然出现列错位、单侧NaN的情况。

另外需要注意:你的JSON数据里的货币值是字符串类型,后续如果要做运算,得先转成数值格式(比如float),避免出现类型错误。

解决方案

步骤1:加载数据并转换数值类型

先把JSON中的字符串值转为float,为后续合并和运算打好基础:

import json
import pandas as pd

# 处理AUD数据
with open('AUD.json') as f:
    AUD_data = json.load(f)
df_aud = pd.DataFrame.from_dict(AUD_data).astype(float)

# 处理BRL数据
with open("BRL.json") as f:
    BRL_data = json.load(f)
df_brl = pd.DataFrame.from_dict(BRL_data).astype(float)

步骤2:按列合并DataFrame

使用pd.concat时指定axis=1,让两个DataFrame按相同索引把列合并到同一行:

df_combined = pd.concat([df_aud, df_brl], axis=1)
print(df_combined.head())

执行后就能得到你期望的输出:

AUD    BRL
0  2.8681  1.1607
1  2.8667  1.1645
2  2.8679  1.1634
...

额外处理(可选)

如果两个DataFrame的索引长度不一致,合并后较短的部分会出现NaN,你可以根据需求调整:

  • 只保留索引完全匹配的行:
    df_combined_inner = pd.concat([df_aud, df_brl], axis=1, join='inner')
    
  • 用指定值填充缺失值:
    df_combined_fill = pd.concat([df_aud, df_brl], axis=1).fillna(0)
    

内容的提问来源于stack exchange,提问作者Michał Śmieszek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:52:44