python – Pandas:根据来自另一列的匹配替换列值
我在第一个数据框df1 [“ItemType”]中有一列,如下所示, Dataframe1 ItemType1 redTomato whitePotato yellowPotato greenCauliflower yellowCauliflower yelloSquash redOnions YellowOnions WhiteOnions yellowCabbage GreenCabbage 我需要根据从另一个数据框创建的字典替换它. Dataframe2 ItemType2 newType whitePotato Potato yellowPotato Potato redTomato Tomato yellowCabbage GreenCabbage yellowCauliflower yellowCauliflower greenCauliflower greenCauliflower YellowOnions Onions WhiteOnions Onions yelloSquash Squash redOnions Onions 请注意, >在dataframe2中,某些ItemType与ItemType中的相同 如果相应的Dataframe2 ItemType中的值匹配,我需要替换Dataframe1 ItemType列中的值,newType保持在bullet-points中列出的异常之上. 到目前为止,我得到了. import pandas as pd #read second `csv-file` df2 = pd.read_csv('mappings.csv',names = ["ItemType","newType"]) #conver to dict df2=df2.set_index('ItemType').T.to_dict('list') 下面给出的匹配替换不起作用.他们正在插入NaN值而不是实际值.这些是基于SO的讨论here. df1.loc[df1['ItemType'].isin(df2['ItemType'])]=df2[['NewType']] 要么 df1['ItemType']=df2['ItemType'].map(df2) 提前致谢 编辑 解决方法使用地图您需要的所有逻辑: def update_type(t1,t2,dropna=False): return t1.map(t2).dropna() if dropna else t1.map(t2).fillna(t1) 让’ItemType2’成为Dataframe2的索引 update_type(Dataframe1.ItemType1,Dataframe2.set_index('ItemType2').newType) 0 Tomato 1 Potato 2 Potato 3 greenCauliflower 4 yellowCauliflower 5 Squash 6 Onions 7 Onions 8 Onions 9 yellowCabbage 10 GreenCabbage Name: ItemType1,dtype: object update_type(Dataframe1.ItemType1,Dataframe2.set_index('ItemType2').newType,dropna=True) 0 Tomato 1 Potato 2 Potato 3 greenCauliflower 4 yellowCauliflower 5 Squash 6 Onions 7 Onions 8 Onions Name: ItemType1,dtype: object 校验 updated = update_type(Dataframe1.ItemType1,Dataframe2.set_index('ItemType2').newType) pd.concat([Dataframe1,updated],axis=1,keys=['old','new']) 定时 def root(Dataframe1,Dataframe2): return Dataframe1['ItemType1'].replace(Dataframe2.set_index('ItemType2')['newType'].dropna()) def piRSquared(Dataframe1,Dataframe2): t1 = Dataframe1.ItemType1 t2 = Dataframe2.set_index('ItemType2').newType return update_type(t1,t2) (编辑:十堰站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – 为什么time.clock比time.time给出更长的时间?
- python – Pyro4:找不到名称服务器
- Git通过python子进程添加
- 如何重定向到DJANGO中包含非ascii字符的查询字符串URL?
- python – 如何以有效的方式找到两个轮廓集之间的所有交点
- python – sqlalchemy在yield_per期间发生游标错误
- python – Numpy相当于if / else list comprehension
- 在Django中,如何在模板中以小写的am / pm显示时间?
- python – 更改Jupyter笔记本版本4.x徽标
- Python可以生成类似于bash的set -x的跟踪吗?