【发布时间】:2017-04-17 19:21:59
【问题描述】:
给定一个元组列表,每个元组都属于 (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
返回:索引([u'R', u'U'], dtype='object', name=u'type')
关于如何在没有多余绒毛的情况下创建所需的任何想法?
【问题讨论】:
标签: python pandas dataframe time-series