【发布时间】:2016-01-15 10:11:56
【问题描述】:
我正在尝试透视表,以便在列中转换一些行值,所以从这个数据框df_behave
list
date_time field value
1 0 2015-05-22 05:37:59 StudentID 129
1 2015-05-22 05:37:59 SchoolId 3
2 2015-05-22 05:37:59 GroupeId 45
2 3 2015-05-26 05:56:59 StudentID 129
4 2015-05-26 05:56:59 SchoolId 65
5 2015-05-26 05:56:59 GroupeId 13
6 2015-05-26 05:56:59 Reference 87
3 ...................... ...... ......
为了实现:
list
date_time StudentID SchoolId GroupId Reference
1 2015-05-22 05:37:59 129 3 45
2 2015-05-26 05:56:59 129 65 15 87
3 ...................... ...... ......
使用以下代码:
def calculate():
df_behave['value'] = df_behave['value'].astype(int)
pi_df=pd.pivot_table(df_behave, 'value', index=['date_time'], columns='field')
return pi_df
我试过这个:
def calculate():
df_behave['value'] = df_behave['value'].astype(int)
for liste, new_df in df_behave.groupby(level=0):
pi_df=pd.pivot_table(new_df, 'value', index=['date_time'], columns='field')
print pi_df
return pi_df
但两人都回了我ValueError: invalid literal for long() with base 10: 'True'
【问题讨论】:
-
@Alexander 是对的,对于MultiIndex,您最好为他提到的字段reset_index 并设置并执行unstack。也许您应该过滤掉不必要的字段?
标签: python pandas pivot dataframe multi-index