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

时间:2016-12-02 19:36:35

标签: python pandas dataframe time-series

给定一个元组列表,每个元组都是(date-time,lang,type),其中lang有三个可能的值(比如'en','es'和'ja'),type有两个值:' U'或'R'。

我想使用以下列为时间序列创建数据框: 一天,语言,'U'和'R'。 也就是说,lang,U和R每天按语言计算。

示例,给出一个记录列表(tupples):

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

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

关于如何创造所需的没有额外的绒毛的任何想法?

1 个答案:

答案 0 :(得分:2)

"type"仍然是列的名称。你可以这样删除它:

df2.columns.name = None

但是,我不认为你可以在同一行上有4个其他标签,因为前两个标签是行上的多索引,另外两个是列上的简单索引。