Сумма значений указанных c столбцов двух фреймов данных - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу суммировать указанные c столбцы двух фреймов данных.

Например:

df1 = pd.DataFrame({'a': [1,1,1], 'b': [1,1,1], 'c':['dd','ee','ff'], 'd':[1,1,1]})

df2 = pd.DataFrame({'a': [1,1,1], 'b': [1,1,1], 'c':['dd','ee','ff'], 'd':[1,1,1]})

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

вывод:

a b c  d

2 2 dd 2

2 2 ee 2

2 3 ff 2

Есть какое-нибудь решение для этого? Спасибо

Ответы [ 3 ]

1 голос
/ 12 февраля 2020

Я использую метод add и метод объединить_строк , чтобы получить результат. select_dtypes разрешает операции на основе типа данных.

(df1
.add(df2.select_dtypes(include='number'))
.combine_first(df1)
)

    a   b   c   d
0   2   2   dd  2
1   2   2   ee  2
2   2   2   ff  2
1 голос
/ 12 февраля 2020

Попробуйте это:

column_names = df1.columns.tolist()

columnTotal_dict = {}

for name in colum_names:
    try:
        df1[[name]] = df1[[name]].astype(int)
        df2[[name]] = df2[[name]].astype(int)

        sumCol_a_df1 = df1['a'].sum()
        sumCol_a_df2 = df2['a'].sum()
        columnTotal_dict[name] = sumCol_a_df1 + sumCol_a_df2
    except ValueError:
        print("Data in this column are not of type int. Skipping")

0 голосов
/ 12 февраля 2020

Вы можете попробовать (при условии, что столбец c может быть взят из первого кадра данных)

>>> mask = ['a', 'b', 'd']
>>> df_out = df1[mask] + df2[mask]
>>> df_out['c'] = df1['c']
>>> df_out
   a  b  d   c
0  2  2  2  dd
1  2  2  2  ee
2  2  2  2  ff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...