如何解决用字典和条件替换行
全部 我有这个DF
data={"col1":[np.nan,3,4,5,9,2,6],"col2":[4,6,1,5],"col3":[7,11,7],"col4":[14,22,8,np.nan,9],"col5":[0,7,"type":["B","B","C","A","B"],"number":["one","two","one",np.nan]}
df=pd.DataFrame.from_dict(data)
此字典:
my_dict={"F":{"col1":2,"col2":44,"col3":0},"B":{"col1":0,"col2":11,"col3":4,"col4":50,"col5":np.nan}}
仅在“数字”为NaN的情况下,我才想根据字典(按类型)替换单元格
我尝试这样做,但是不考虑“数字”“ NaN”,而是重播类型为“ B”的所有位置。
updatedf=pd.DataFrame(my_dict).T.reindex(df.type)
updatedf.index=df.index
df.update(updatedf)
print(df)
如何在“数字”列上添加“ NaN”的条件?
我想要得到的东西
data={"col1":[np.nan,0 ],11],4 ],50,50],5 ],np.nan]}
df=pd.DataFrame.from_dict(da
解决方法
将更新更改为fillna
updatedf=pd.DataFrame(my_dict).T.reindex(df.type)
updatedf.index=df.index
updatedf=updatedf[df.number.isna()]
df.update(updatedf)
,
您可以使用布尔索引来仅获取number
为NaN
的行,然后使用fillna
:
updatedf=pd.DataFrame(my_dict).T
df = df.set_index('type')
df.loc[df.number.isna()] = df.loc[df.number.isna()].fillna(updatedf)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。