Как я могу почасово пересчитывать фрейм данных, в котором есть столбец твитов? (Я хотел бы объединить все твиты в час) - PullRequest
1 голос
/ 04 мая 2020

У меня есть датафрейм с датой в виде индекса и твитами в другом столбце, а также другая статистика, например количество лайков. Я хотел бы пересчитать df с часовым интервалом, чтобы я получил все твиты и сумму всех характеристик в час, что я сделал со следующим кодом:

df.resample('60min').sum()

Проблема в том, что мой столбец твитов исчезает .. И мне это нужно для анализа настроений. Я новичок в программировании, так что спасибо заранее за это!

1 Ответ

1 голос
/ 04 мая 2020

IIU C вы будете groupby и использовать agg

import numpy as np
import pandas as pd
# sample data
np.random.seed(1)
df = pd.DataFrame(np.transpose([np.random.randint(1,10, 1489), ['abc']*1489]),
                  index=pd.date_range('2020-01-01', '2020-02-01', freq='30T'),
                  columns=['num', 'tweet'])

# groupby the index floored to hour, sum the num col 
# and join the tweets with a semi-colon or what ever you want
df.groupby(df.index.floor('H')).agg({'num': sum, 'tweet': '; '.join})

                    num     tweet
2020-01-01 00:00:00  69  abc; abc
2020-01-01 01:00:00  61  abc; abc
2020-01-01 02:00:00  12  abc; abc
2020-01-01 03:00:00  87  abc; abc
2020-01-01 04:00:00  35  abc; abc

Или, если вы просто хотите присоединить строки как есть, то сложите все:

df.groupby(df.index.floor('H')).agg(sum)

                    num   tweet
2020-01-01 00:00:00  69  abcabc
2020-01-01 01:00:00  61  abcabc
2020-01-01 02:00:00  12  abcabc
2020-01-01 03:00:00  87  abcabc
2020-01-01 04:00:00  35  abcabc
...