我是python初学者。我有两个数据帧,df1
,df2
。有一些重复项(apple
,grape
),因此我想从df2
添加用户信息并将其添加到df1
,但仅添加到重复项。最后我应该有一个新的df1
苹果和葡萄行与新数据(我知道我将不得不在df1中创建一个新列“ USERS”)
感谢您的帮助
import pandas as pd
df1 = pd.DataFrame({'FRUIT':['banana','apple', 'grape'], 'COLOR':['yellow', 'red', 'green'], 'CAL':[100, 80, 100]})
df2 = pd.DataFrame({'FRUIT':['kiwi','melon', 'apple', 'grape', 'pineapple'], 'COLOR':['green', 'orange', 'red',\
'blue','yellow'], 'CAL':[60, 70, 80, 50, 80], 'USERS':[4, 7, 12, 20, 3]})
df = pd.concat([df1,df2], keys=['df1','df2'], sort=False)
col_val_to_add = df[df.duplicated(['FRUIT'])]
for i in df:
for j in col_val_to_add:
if df.loc[['FRUIT',i]]==df.loc[['FRUIT',j]]:
df.loc[['USERS',j]] = col_val_to_add.loc[['USERS',i]]
print(df)
答案 0 :(得分:0)
您希望执行的操作称为联接(特别是LEFT联接)。在熊猫中,您可以通过合并来做到这一点:
new_df = df1.merge(df2[['FRUIT', 'USERS']], on="FRUIT", how="left")
希望有帮助。
编辑:对不起,我只是重新阅读了您的问题。如果只希望两个dfs中的FRUIT都将左联接切换为内部联接,如下所示:
new_df = df1.merge(df2[['FRUIT', 'USERS']], on="FRUIT", how="inner")