我在使用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设置,但创建数据透视表仍会出现系列错误。
答案 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