如何合并两个行数相同的CSV文件列并避免NaN值
解决两个行数相同CSV的无NaN合并问题
哦,我明白你的问题了——你用pd.concat的时候选错了轴参数,导致数据被上下堆叠而不是左右合并,这才出现了大量NaN。因为你的两个数据集行数完全一致,我们只需要把它们按列对齐合并,就能得到没有缺失值的结果。
错误原因分析
你之前用的pd.concat([delete, data1], axis=0)中,axis=0是按行方向拼接(把一个DataFrame放在另一个下面)。这样dates.csv的行没有Expected和Predicted列,就会填充NaN;mydata.csv的行没有日期列,同样填充NaN。而你需要的是把每一行的日期和对应的预测值、期望值放在同一行,也就是列方向拼接。
方法一:修改concat的轴参数
直接把axis改成1,就能实现左右合并,因为两个DataFrame行数相同,索引会自动对齐:
import pandas as pd # 先正确读取CSV文件(注意变量名规范) dates_df = pd.read_csv('dates.csv') mydata_df = pd.read_csv('mydata.csv') # 按列合并,ignore_index=False保留原有索引(可选,这里因为行数一致,不影响) result = pd.concat([dates_df, mydata_df], axis=1) print(result)
方法二:使用merge按索引合并
如果更明确要按行索引对齐,merge也是个好选择:
result = pd.merge(dates_df, mydata_df, left_index=True, right_index=True)
方法三:使用join方法(最简洁)
join默认就是按索引合并两个DataFrame,代码最简洁:
result = dates_df.join(mydata_df)
验证结果
以上三种方法都会得到类似这样的结果(示例):
| 日期 | Expected | Predicted |
|---|---|---|
| 2020-07-06 | 12990 | 12797.578628473471 |
| 2020-07-07 | ... | ... |
完全没有NaN值,每一行的日期和对应数据都正确对应。
小提醒:确保两个CSV的行数确实完全一致,如果有一行差异,还是会出现NaN哦,但你已经确认行数相同,所以没问题。
内容的提问来源于stack exchange,提问作者Revanth Tv
相关产品推荐
相关产品推荐

