1
问题:我有2个数据帧df1
和df2
。我的目标是修改df1
,如果在df2
内找到它,请替换它的一些值。将值映射到Pandas中不同数据帧的数据帧
import pandas as pd
# dataframe 1
data = {'A':[90,20,30,25,50,60],
'B':['qq','ee','rr','tt','ii','oo'],
'C':['XX','VV','BB','NN','KK','JJ']}
df1 = pd.DataFrame(data)
# dataframe 2
convert_table = {'X': ['dd','ee','ff','gg','hh','ii','ll','mm','nn','oo','pp','qq','rr','ss','tt','uu'],
'Y': ['DD','VV','FF','GG','HH','KK','LL','MM','NN','JJ','PP','XX','BB','SS','NN','LL'],
'Z': [5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61]}
df2 = pd.DataFrame(convert_table)
# search values of df1 inside of df2 and replace values
for idx1,row1 in df1.iterrows():
for idx2, row2 in df2.iterrows():
if row1['B']==row2['X'] and row1['C']==row2['Y']:
df1.replace(to_replace=row1['B'],value=row2['Z'],inplace=True)
正如你可以看到我有2圈,我检查的df1
(row1
)的一般行的df2
发现里面。如果这一条件得到满足,那么我更换包含在ROW1 [“B”]与包含在row2['Z']
因此,我得到的是结果的一个值(我想有作为的结果到底是什么):
In [120]: df1
Out[120]:
A B C
0 90 43 XX
1 20 7 VV
2 30 47 BB
3 25 59 NN
4 50 19 KK
5 60 37 JJ
请注意列B如何更改。
问题:你可以建议我一个更好的方式来写我的代码吗?我想通过使用Pandas或Python提供的内置函数尽可能快地完成它。
注意:包含在数据帧中的数据仅用于演示目的。
是否有可能获得与我在例子中获得的列数相同的列数的输出? –
我刚刚在发布您的评论的同时做到了这一点:) –
非常感谢:) –