добавить значения двух столбцов из двух разных панелей данных - PullRequest
1 голос
/ 07 марта 2019

Я хочу добавить 2 столбца из 2 разных фреймов данных, основываясь на условии, что имя одно и то же:

import pandas as pd
df1 = pd.DataFrame([("Apple",2),("Litchi",4),("Orange",6)], columns=['a','b'])
df2 = pd.DataFrame([("Apple",200),("Orange",400),("Litchi",600)], columns=['a','c'])

Теперь я хочу добавить столбцы b и c, если имя одинаковое в a.

Я попробовал это df1['b+c']=df1['b']+df2['c'], но он просто добавляет столбцы b и c, поэтому результат получается как

      a    b  b+c
0   Apple  2  202
1  Litchi  4  404
2  Orange  6  606

, но я хочу

    a  b+c
0   Apple  202
1  Litchi  604
2  Orange  406

Я думаю, мне нужноиспользовать isin но я не понимаю, как?

1 Ответ

1 голос
/ 07 марта 2019

Столбцы b и c выровнены по значениям индекса в операции суммирования, поэтому необходимо создать индекс по DataFrame.set_index по столбцу a:

s1 = df1.set_index('a')['b']
s2 = df2.set_index('a')['c']
df1 = (s1+s2).reset_index(name='b+c')
print (df1)
        a  b+c
0   Apple  202
1  Litchi  604
2  Orange  406

РЕДАКТИРОВАТЬ: Если необходимо исходное значение для несогласованных значений, используйте Series.add с параметром fill_value=0

df2 = pd.DataFrame([("Apple",200),("Apple",400),("Litchi",600)], columns=['a','c']) 
print (df2)
        a    c
0   Apple  200
1   Apple  400
2  Litchi  600

s1 = df1.set_index('a')['b']
s2 = df2.set_index('a')['c']
df1 = s1.add(s2, fill_value=0).reset_index(name='b+c')
print (df1)
        a    b+c
0   Apple  202.0
1   Apple  402.0
2  Litchi  604.0
3  Orange    6.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...