大Pandas从长形到宽形再交配

2024-07-07 06:18:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究如何对以下数据重新取样。诀窍是有两个变量,我需要(标识符和变量)保持在重采样。你知道吗

我尝试使用以下代码重新采样:

df.set_index('date').to_period('d').resample('d').fillna(method='ffill')

但它不允许我给索引不是唯一的。所以,我想如果我把它转换成宽幅的形式,使它成为多层次的列,我就可以在保持标识符和变量信息的同时,对重新成形的数据帧进行重采样。你知道吗

原始数据格式如下:

date, identifier, variable, value
2018-04-01, BBN, M3M, 24
2018-04-07, BBN, M3M, 25
2018-04-14, BBN, M3M, 25
2018-04-21, BBN, M3M, 25
2018-04-01, BBN, M12M, 48
2018-04-07, BBN, M12M, 52
2018-04-14, BBN, M12M, 50
2018-04-21, BBN, M12M, 49
2018-04-01, MXP, M3M, 18
2018-04-07, MXP, M3M, 20
2018-04-14, MXP, M3M, 25
2018-04-21, MXP, M3M, 22
2018-04-01, MXP, M12M, -10
2018-04-07, MXP, M12M, -12
2018-04-14, MXP, M12M, -14
2018-04-21, MXP, M12M, -18

预期重塑:

      identifier  BBN,       MXP
      variable    M3M, M12M,M3M,M12M
date  2018-04-01, 24, 48, 18, -10
date  2018-04-07, 25, 52, 20, -12 
date  2018-04-14, 25, 50, 25, -14
date  2018-04-21, 25, 49, 22, -18

我认为,一旦它是这种格式,日期索引应该是唯一的,然后我将能够重新采样的数据,包括失踪的日子。我只是不知道如何透视表以获得多个级别的列。你知道吗

有没有人能给我指出正确的方向,或者提供任何帮助或建议???你知道吗


Tags: to数据代码dfdateindex标识符variable
1条回答
网友
1楼 · 发布于 2024-07-07 06:18:00

使用set_indexunstack修复代码

df.set_index(['date','identifier','variable'])['value'].unstack([1,2])
Out[558]: 
 identifier  BBN        MXP      
 variable    M3M  M12M  M3M  M12M
date                             
2018-04-01    24    48   18   -10
2018-04-07    25    52   20   -12
2018-04-14    25    50   25   -14
2018-04-21    25    49   22   -18

pivot_table

df.pivot_table(index='date',columns=['identifier','variable'],values='value')
Out[560]: 
identifier   BBN        MXP     
variable    M12M  M3M  M12M  M3M
date                            
2018-04-01    48   24   -10   18
2018-04-07    52   25   -12   20
2018-04-14    50   25   -14   25
2018-04-21    49   25   -18   22

相关问题 更多 >