将英文标题翻译成中文,并且不包含任何特殊字符或引号:“按照自定义的分组数据帧”

2024-04-25 07:46:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的数据帧,我试图在一个实例中按分钟组合日期,另一个实例按30分钟组合。在

df = pd.read_csv('2015-09-01.csv', header=None,\
                    names=['ID','CITY', 'STATE', 'TIMESTAMP','TWEET'], \
                    low_memory=False, \
                    parse_dates=['TIMESTAMP'], usecols=['STATE','TIMESTAMP','TWEET'])

方法1

我使用过this解决方案,但如果我尝试以下方法:

^{pr2}$

它会导致以下错误:

TypeError: axis must be a DatetimeIndex, but got an instance of 'Int64Index

这很奇怪,因为TIMESTAMPread_csv中被解析

方法2

我尝试将TIMESTAMP设置为索引,然后执行以下操作:

df = df2.groupby([df2.index,pd.TimeGrouper(freq='H')])

然而,它并不是正确的,因为len(df)是1350而不是{},因为数据帧作为一个整体来自一天的数据。在

方法3

我使用this解决方案,但不确定如何将其设置为30分钟的间隔:

df = df2.groupby(df2['TIMESTAMP'].map(lambda x: x.hour))

样本数据

STATE,TIMESTAMP,TWEET
0,TX,2015-09-25 00:00:01,Wish I could have gone to the game
1,USA,2015-09-25 00:00:01,PSA:  @HaileyCassidyy and I are not related in...
2,USA,2015-09-25 00:00:02,If you gonna fail don't bring some one down wi...
3,NJ,2015-09-25 00:00:02,@_falastinia hol up hol up I can't listen to t...
4,USA,2015-09-25 00:00:02,"Wind 0.0 mph ---. Barometer 30.235 in, Rising ..."
5,NJ,2015-09-25 00:00:03,WHY ISNT GREYS ANATOMY ON?!
6,MI,2015-09-25 00:00:03,@cody_cole06 you bet it is
7,WA,2015-09-25 00:00:04,"Could be worse, I guess, could be in a collisi..."
8,NY,2015-09-25 00:00:04,I'm totally using this graphic some day... tha...
9,USA,2015-09-25 00:00:04,@MKnightOwl @Andromehda LMAO I honestly didn't..

Tags: csv数据实例方法indfreadbe
1条回答
网友
1楼 · 发布于 2024-04-25 07:46:46

要按频率对列分组,需要将其名称传递给Grouperkey参数,如下所示:

df.groupby(pd.Grouper(key='TIMESTAMP', freq='30T'))

编辑:

有关更多信息,请参阅^{}文档-但通常,当您groupby([a,b])时,您是按ab的独特组合进行分组。在

所以在您的示例中,您是按所有唯一的时间戳值(df['TIMESTAMP'])分组的 索引的时间分组符(pd.TimeGrouper如果没有指定键,则默认为索引)TypeError是因为索引不是datetimelike的。在

这也是为什么在将索引设置为'TIMESTAMP'后获得大量组的原因。在

相关问题 更多 >