问题:我有两个数据帧df1
和{df1
,如果在df2
中找到了它的一些值,那么就替换它的一些值。在
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个for循环,我检查df1
(row1
)的泛型行是否在df2
内找到。如果满足这个条件,那么我用row2['Z']
中包含的值替换行1['B']中包含的值
因此,我得到的结果是(正是我希望得到的结果):
^{pr2}$注意B列的变化。在
问题:您能给我一个更好的编写代码的方法吗?我希望尽可能快地使用Pandas或Python提供的内置函数。在
注意:数据帧中包含的数据仅用于演示。在
对两列使用合并:
how='left'
在这里很关键。如果你不明白为什么要读Brief primer on merge methods (relational algebra)。在我将修改您的示例以创建一个在df1中有一个在df2中不存在的条目,即
^{pr2}$('ii','KK')
现在要检索最终的数据帧:
相关问题 更多 >
编程相关推荐