给定以下数据框:
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 = test_df.pivot_table(index='date', columns=['A', 'B', 'C'], values='val')
假设我执行了一些操作(例如对datetime索引重新采样)后,希望将其恢复为原始表格格式。将其转换回最有效的方法是什么?
我现在正在执行的当前方法是:
test_pivot_table.stack().stack().stack().to_frame('val').reset_index()
但是,对于较大的数据帧,三重stack()
操作速度很慢且占用大量内存。
用于DataFrame.unstack
删除缺失值:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句