извлекать данные из одного фрейма данных и добавлять его во второй фрейм данных - PullRequest
0 голосов
/ 05 апреля 2019

Я начинающий питон.У меня есть два кадра данных, df1, df2.есть некоторые дубликаты (apple, grape), поэтому я хочу добавить информацию о пользователях из df2 и добавить ее к df1, но только к дубликатам.в конце у меня должен быть новый df1 с рядами яблок и винограда с новыми данными (я знаю, что я должен был бы создать новый столбец «ПОЛЬЗОВАТЕЛИ» в df1). Любая помощь приветствуется

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 голосов
/ 05 апреля 2019

То, что вы надеетесь сделать, называется соединением (в частности, левым соединением). В пандах вы можете сделать это с помощью слияния:

new_df = df1.merge(df2[['FRUIT', 'USERS']], on="FRUIT", how="left")

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Извините, я просто перечитал ваши вопросы. Если вы хотите, чтобы только FRUIT были в обоих dfs, переключите левое соединение на внутреннее соединение следующим образом:

new_df = df1.merge(df2[['FRUIT', 'USERS']], on="FRUIT", how="inner")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...