Python 3.x 使用python将NaN值替换为另一个数据帧
我在用不同索引长度的另一个数据帧替换一个数据帧中NaN值的到期日期列时遇到了一些困难 示例数据df1:Python 3.x 使用python将NaN值替换为另一个数据帧,python-3.x,pandas,Python 3.x,Pandas,我在用不同索引长度的另一个数据帧替换一个数据帧中NaN值的到期日期列时遇到了一些困难 示例数据df1: SOH Price Value Expiry Comments 0 1P 10.49 10.49 NaN NaN 1 220 7.55 16.61 NaN NaN 用df2替换到期列: SOH Price Value Expiry Com
SOH Price Value Expiry Comments
0 1P 10.49 10.49 NaN NaN
1 220 7.55 16.61 NaN NaN
用df2替换到期列:
SOH Price Value Expiry Comments
1 1P 6.22 6.22 NaN NaN
2 61 17.65 10.77 NaN NaN
3 1P 11.99 11.99 NaN NaN
4 2P 54.45 108.90 NaN NaN
5 1P 10.49 10.49 May-17 NaN
6 220 7.55 16.61 June-18 NaN
因此,新的数据帧可能具有不同的顺序和索引,但列保持不变
我希望实现df1输出为:SOH价格值到期评论
0 1P 10.49 10.49 5月17日NaN
1820年6月18日7.55 16.61南 我试过:
- df1.fillna(df2)
- df1.更新(df2)
- df1.loc[df1['Expiry'].isnull(),'Expiry']= df1['Expiry'].map(df2.Expiry)
- 具有3个参数的正向循环
- 合并
- 内连接
但是还没有运气:(任何帮助都将不胜感激!
加入['SOH','Price','Value']
然后fillna
cols = ['SOH', 'Price', 'Value']
d2 = df2.set_index(cols).Expiry.dropna()
df1.fillna(df1.drop('Expiry', 1).join(d2, on=cols))
SOH Price Value Expiry Comments
0 1P 10.49 10.49 May-17 NaN
1 220 7.55 16.61 June-18 NaN
是否根据SOH列进行替换?不,我需要价格和值匹配,以防其他SOH看起来与快速响应相同,但奇怪的是“d2=df2.set_index(cols.Expiry.dropna()”给我AttributeError:'DataFrame'对象没有属性'Expiry',则您的列名与您想象中的列名不同。设置索引(cols)我的打印(d2)变为:空DataFrame列:[索引:[105、22.92、40.11、nan、nan等],任何指向我做错了什么的指针?看起来它只是将所有内容都设置到索引中,列中没有值。您是否使用了cols=['SOH','Price','Value']
?print(df2.columns)`说什么?是的,我按照您的建议做了,print(d2.columns)给出:index(['SOH','Price','Value','expiration','Comments']),dtype='object),d1列也给出了相同的结果