#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. о, вы правы, я не видел, как он редактировал, извините