用类别创建时间序列的简洁方式

2024-04-26 11:00:30 发布

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

给定一个元组列表,每个元组都是(date-time,lang,type),其中lang取三个可能的值(比如“en”、“es”和“ja”),type取两个值:“U”或“R”。你知道吗

我要为具有以下列的时间序列创建数据帧: 天,语言,“U”和“R”。 也就是说,lang、U和R是每天按语言计算的。你知道吗

例如,给定一个记录列表(元组):

df = pd.DataFrame.from_records(records, columns=['time','lang','type'])
df.head()

结果:

     time                  lang  type
0    2016-05-19 20:20:26    en    R
1    2016-05-19 20:20:43    ja    R
2    2016-05-19 20:26:01    ja    U
3    2016-05-19 20:30:31    en    R
4    2016-05-19 20:33:57    es    R
...

我想操纵这个数据帧(或原始记录列表)得到如下结果:

time        lang  U    R
2016-05-19  en     4    2
            ja     1    1
            es     0    1
2016-05-20  en    10    7
            ja     1    9
            es     3   13

我正试着和你一起做这件事

df2 = df.groupby([df['time'].dt.to_period('D'), 'lang', 'type']).count().unstack()
df2.columns = df2.columns.droplevel(0)

但是我在列上有一个索引,我无法摆脱它(忽略数字)。你知道吗

            type    U     R
time        lang
2016-05-19    en     4    2
              ja     1    1
              es     0    1
2016-05-20    en    10    7
              ja     1    9
              es     3   13

以及

df2.columns

返回:Index([u'R',u'u'],dtype='object',name=u'type')

你知道如何在没有多余绒毛的情况下创造出你想要的东西吗?你知道吗


Tags: columns数据语言df列表langdatees
1条回答
网友
1楼 · 发布于 2024-04-26 11:00:30

"type"保留为列的名称。您可以通过以下方式删除它:

df2.columns.name = None

但是,我认为不能将其他4个标签放在同一行上,因为前两个标签是行上的多索引,另外两个是列上的简单索引。你知道吗

相关问题 更多 >