什么';在Python中堆叠多级透视表的有效方法是什么?
给定以下数据帧:什么';在Python中堆叠多级透视表的有效方法是什么?,python,pandas,pivot-table,Python,Pandas,Pivot Table,给定以下数据帧: test_df = pd.DataFrame({'date': ['2020-01-01', '2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02', '2020-01-02'], 'A': [1,2,3,4,5,6], 'B': ['a', 'b', 'c', 'd', 'e', 'f'], 'C': ['aa', 'bb', 'cc', 'dd', 'ee', 'ff'], 'val': [100, 200, 300,
test_df = pd.DataFrame({'date': ['2020-01-01', '2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02', '2020-01-02'], 'A': [1,2,3,4,5,6], 'B': ['a', 'b', 'c', 'd', 'e', 'f'], 'C': ['aa', 'bb', 'cc', 'dd', 'ee', 'ff'], 'val': [100, 200, 300, 400, 500, 600]})
test_df['date'] = pd.to_datetime(test_df['date'])
我形成以下数据透视表(这样做的原因超出了本问题的范围):
假设在我执行一些操作(例如重新采样日期时间索引)之后,我希望它恢复为原始的表格形式。最有效的方法是什么
我目前的做法是:
test_pivot_table.stack().stack().stack().to_frame('val').reset_index()
但是,对于较大的数据帧,三重stack()
操作速度慢且占用大量内存。用于删除缺少的值:
print (test_pivot_table.unstack().dropna().reset_index(name='val'))
A B C date val
0 1 a aa 2020-01-01 100.0
1 2 b bb 2020-01-01 200.0
2 3 c cc 2020-01-01 300.0
3 4 d dd 2020-01-02 400.0
4 5 e ee 2020-01-02 500.0
5 6 f ff 2020-01-02 600.0
test\u pivot\u table.unstack().reset\u index()
?
print (test_pivot_table.unstack().dropna().reset_index(name='val'))
A B C date val
0 1 a aa 2020-01-01 100.0
1 2 b bb 2020-01-01 200.0
2 3 c cc 2020-01-01 300.0
3 4 d dd 2020-01-02 400.0
4 5 e ee 2020-01-02 500.0
5 6 f ff 2020-01-02 600.0