从一个数据框中提取数据并将其添加到另一个数据框中

时间:2019-04-05 17:31:55

标签: python dataframe

我是python初学者。我有两个数据帧,df1df2。有一些重复项(applegrape),因此我想从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)

1 个答案:

答案 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")