python-3.x - 制作新列时修复 Pandas NaN?
问题描述
我有两个熊猫的数据框
id volume
1 100
2 200
3 300
和
id 2020-07-01 2020-07-02 ...
1 12 14
2 5 1
3 7 8
我正在尝试根据第二个表中的值在第一个表中创建一个新列。
df['Total_Change'] = df2.iloc[:, 0] - df2.iloc[:, -1]
df['Change_MoM'] = df2.iloc[:, -2] - df2.iloc[:, -1]
这行得通,但是表中的值都向下移动了一个,因此第一个值是 NaN 并且最后一个值丢失了,所以我的结果是
id volume Total_Change Change_MoM
1 100 NaN NaN
2 200 -2 -2
3 300 4 4
为什么会这样?我已经仔细检查了 df2.iloc 语句是否获取了正确的值,但我不明白为什么我的第一个表将值向下移动一行。我也尝试将表格向上移动一个,但在底部留下了一个 NaN。
两张桌子大小一样。需要明确的是,我想知道如何首先防止 NaN 发生,而不是用其他值替换它。
解决方案
两个 dfs 都有不同的索引,添加一个快速修复reset_index()
df=df.reset_index(drop=True)
df2=df2.reset_index(drop=True)