【发布时间】:2021-01-30 15:05:51
【问题描述】:
如果 pandas 数据框 (Python 3.x) 的第一列不匹配,我需要能够匹配第二列。
例如
table_df = pd.DataFrame ( {
'Name': ['James','Tim','John','Emily'],
'NickName': ['Jamie','','','Em'],
'Colour': ['Blue','Black','Red','Purple']
})
lookup_df = pd.DataFrame ( {
'Name': ['Tim','John','Em','Jamie'],
'Pet': ['Cat','Dog','Fox','Dog']
})
table_df
Name NickName Colour
0 James Jamie Blue
1 Tim Black
2 John Red
3 Emily Em Purple
lookup_df
Name Pet
0 Tim Cat
1 John Dog
2 Em Fox
3 Jamie Dog
我需要的结果:
Name NickName Colour Pet
0 James Jamie Blue Dog
1 Tim Black Cat
2 John Red Dog
3 Emily Em Purple Fox
在 Name 列上匹配,如果没有匹配到 Nickname 列, 我尝试了很多不同的方法,包括:
pd.merge(table_df,lookup_df, how='left', left_on='Name', right_on='Name')
if Nan -> pd.merge(table_df,lookup_df, how='left', left_on='NickName', right_on='Name')
但它不能满足我的需要,我想避免嵌套循环。 有没有人知道如何做到这一点?非常感谢任何反馈。
谢谢!
【问题讨论】:
-
只需执行两次
merge,一次在Namw,另一次在NickName
标签: python-3.x pandas dataframe join concat