Groupby Date создает пустой фрейм данных - Pandas - Python - PullRequest
0 голосов
/ 03 февраля 2020

Как мне сгруппировать по дате?

Я пробовал df.grouby(df.date) и выдает пустой df. По сути, я хочу удалить NaN и сгруппировать значения 1 и 2 по дате.

         date  value1 value2
0  2001-01-01   800 NaN
1  2001-01-02   900 NaN
2  2001-01-03  1200 NaN
3  2001-01-04   700 NaN
4  2001-01-05   600 NaN      
5  2001-01-01   NaN 1175
6  2001-01-02   NaN 1176
7  2001-01-03  NaN 1177
8  2001-01-04   NaN 1778
9  2001-01-05   NaN 1779

Желаемый фрейм данных:

         date  value1 value2
0  2001-01-01   800 1175
1  2001-01-02   900 1176
2  2001-01-03  1200 1177
3  2001-01-04   700 1778
4  2001-01-05   600 1179      

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Использование groupby.first:

new_df = df.groupby('date',as_index = False).first()
print(new_df)

         date  value1  value2
0  2001-01-01   800.0  1175.0
1  2001-01-02   900.0  1176.0
2  2001-01-03  1200.0  1177.0
3  2001-01-04   700.0  1778.0
4  2001-01-05   600.0  1779.0

Если вы можете иметь более одного значения на столбец и дату, вам нужно:

df.groupby('date').apply(lambda x: x.ffill().bfill()).drop_duplicates()
1 голос
/ 03 февраля 2020

Вы можете использовать stack(), который по умолчанию сбрасывает nan, затем unstack:

df.set_index('date').stack().unstack().reset_index()

         date  value1  value2
0  2001-01-01   800.0  1175.0
1  2001-01-02   900.0  1176.0
2  2001-01-03  1200.0  1177.0
3  2001-01-04   700.0  1778.0
4  2001-01-05   600.0  1779.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...