2016-12-02 67 views
1

给出一个元组列表,每个元组都是(date-time,lang,type),其中lang取三个可能的值(比如'en','es'和'ja '),类型取两个值:'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 '],D型细胞=' 对象',名字= u'type')

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

回答

2

"type"仍然是列的名称。你可以将其删除这种方式:

df2.columns.name = None 

不过,我不认为你可以有相同的4个其他标签linebecause前两个标签是在该行的多指标,以及2人是一个简单的列上的索引。

+0

谢谢!事实上这有助于减少多指数。我以一种稍微不同的方式从记录中重建了它,以避免它 - 即时在字典中对计数进行分组。它也更高效。 – ScienceFriction