Pandas GroupBy и Sum python

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Всем привет, я пытаюсь сгруппировать данные по дате, а затем суммировать второй столбец, но я не получаю информацию, которая мне нужна

Это мои данные:

 |Day       |Messages|Codes  |
|----------|--------|-------|
|2020-08-25|647     |34234  |
|2020-08-25|6,396   |3425645|
|2020-08-25|16,615  |64564  |
|2020-08-26|16,066  |45654  |
|2020-08-26|4,716   |343234 |
|2020-08-26|748     |35455  |
|2020-08-28|571     |343423 |
|2020-08-28|14      |3423   |
|2020-08-28|1       |SDAS2  |
  

Вывод, который мне нужен, выглядит следующим образом:

 |Day       |Messages|Codes  |
|----------|--------|-------|
|2020-08-25|23658   |34234  |
|          |        |3425645|
|          |        |64564  |
|2020-08-26|21530   |45654  |
|          |        |343234 |
|          |        |35455  |
|2020-08-28|586     |343423 |
|          |        |3423   |
|          |        |SDAS2  |
  

Сначала нужно сгруппировать по дням, а затем суммировать столбец сообщений, я пробовал со следующими строками, но работает не так, как я ожидал: c

 #1
read = pd.read_csv('data.csv')
read.groupby(['Day'])
read.groupby(['Messages']).sum()
read.to_html('test.html',index=False)

#2
read = pd.read_csv('data.csv')
group_day = read.groupby(['Day','Messages']).sum()
group_day.to_html('test.html')
  
#3
read = pd.read_csv('data.csv')
read.groupby('Day')[['Messages','ShortCode']].sum()
read.to_html('test.html',index=False)
  

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

1. read.assign(Messages=read.groupby("Day")["Messages"].transform("sum")) ?

2. почему некоторые столбцы не отображаются в ожидаемом выводе? Но Codes столбцы все еще имеют значения в этих строках

Ответ №1:

Это может приблизить вас к тому, что вам нужно:

read.groupby(['Day','Messages','ShortCode']).size().reset_index().set_index(['Day','Messages'])