首页 > 解决方案 > 我如何每小时重新采样包含一列推文的数据框?(我想每小时连接所有推文)

问题描述

我有一个数据框,它有日期时间作为索引和不同列中的推文以及其他统计信息,如喜欢的数量。我想以每小时间隔对 df 重新采样,这样我就可以获得所有推文和每小时所有统计信息的总和,我使用以下代码完成了这项工作:

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

问题是我的推文栏消失了。我需要它来进行情绪分析。我是编程新手,所以提前感谢您阅读本文!

标签: pythonpandastweepy

解决方案


IIUC 您将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

推荐阅读