Как мне сгруппировать столбцы 1 и 2, чтобы добавить сумму каждой пары независимо от порядка в зависимости от года?

#python #excel #dataframe

Вопрос:

У меня есть файл .csv в этом формате.

колонка1 колонка2 Рассчитывать Год
A B 5 1990
A B 2 2000
A C 5 2000
B A 10 1990

Используя Python/excel, как мне сгруппировать столбцы 1 и 2 таким образом, чтобы порядок не имел значения, и добавить общее количество каждой пары в соответствии с годом? Например, результаты должны быть:

колонка1 колонка2 Рассчитывать Год
A B 15 1990
A B 2 2000
A C 5 2000

Спасибо

Ответ №1:

Вы можете сделать это с помощью groupby :

 import pandas as pd
import numpy as np

data = {
    "col1": ["A", "A", "A", "B"],
    "col2": ["B", "B", "C", "A"],
    "Count": [5, 2, 5, 10],
    "Year": [1990, 2000, 2000, 1990],
}


df = pd.DataFrame(data=data)
cols = ["col1", "col2"]
df[cols] = pd.DataFrame(np.sort(df[cols]))
df = df.groupby(["col1", "col2", "Year"])["Count"].sum().reset_index()
df = df[["col1", "col2", "Count", "Year"]]
print(df)
 

Выходы:

   col1 col2  Count  Year
0    A    B     15  1990
1    A    B      2  2000
2    A    C      5  2000
 

Комментарии:

1. оп хочет добавить. не макс

2. @diggusbickus только что увидел, что он внес правку. В любом случае обновил ответ.

3. о, вы правы, я не видел, как он редактировал, извините