不使用dataframe中的datetimeindex创建数据透视表

时间:2016-01-30 06:48:47

标签: python pandas dataframe pivot-table datetimeindex

我在使用datetimeindex作为索引的数据框架中创建数据透视表时遇到问题。编辑以显示完整代码

有问题的代码是

unit1 = ["U1", "U1", "U1", "U1", "U1", "U1"]
name1 = ["fn ln", "fn ln2", "fn ln3", "fn ln4", "fn ln5", "fn ln6"]
count1 = [2,4,6,8,10,12]

df = pd.DataFrame( {'Date': pd.Timestamp('2016-01-01'),
                    'Unit': unit1,
                    'Name"': name1,
                    'Count': count1})
df2 = df.set_index(pd.DatetimeIndex(df.Date))
df2['Month'] = df2.index.month

# this line succeeds
pt = pd.pivot_table(df, index=df2.index.month, values='Count')

# this line fails with Series object has no attribute month
pt = pd.pivot_table(df, index=df2.Month.month, values='Count')

数据帧的内部(_stat_axis)显示索引字段是DatetimeIndex。月份列也具有datetimeindex设置,但创建数据透视表仍会出现系列错误。

1 个答案:

答案 0 :(得分:1)

也许您可以将参数values添加到pivot_table

print df
           Unit   Name  Count
2013-01-01   U1  fn ln      2
2013-01-01   U1  fn ln    200
2013-01-01   U2  fn ln     55

print pd.pivot_table(df, index=df.index.month, values="Count", aggfunc=np.sum)
1    257
Name: Count, dtype: int64