大熊猫将列旋转到行

时间:2018-10-06 02:27:52

标签: python pandas

我有一个数据框(例如下面的数据框),我对其进行了旋转以对其进行一些操作。

原始数据帧df:

index   item   value    day     time
0   P472   0.126    2011-12-08  00:00:00
1   P472   0.12     2011-12-08  00:30:00
2   P472   0.119    2011-12-08  01:00:00
3   P472   0.425    2011-12-08  01:30:00
4   P472   0.154    2011-12-08  02:00:00

我使用下面的代码对数据框进行了透视,以在下面生成新的数据框:

df_pivoted = df.pivot_table(index=['item', 'day'], columns='time',
                 values='value', aggfunc='first').reset_index()

df_pivoted:

index   item   day      00:00:00 00:30:00 ... 23:30:00
0   P472   2011-12-08   0.126    0.12     ...   0.18
1   P473   2011-12-08   0.5      0.55     ...   0.30

现在,我想将df_pivoted重新设置为原始数据帧的布局,即将00:00:00到23:30:00的列折叠为时间列,在特定的一天中每隔24小时,并且重新引入值列(使用df_pivoted.stack?),但我无法解决如何做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

可以通过public class ArrayInitTest { public static void main(String[] args) { int[] x = {1, 2, 3}; int[] y = {0}; int[] z = null; } } 实现pd.pivot_table的反转:

pd.melt

值得指出的是,此功能有效,因为您的聚合函数为df_melted = df_pivoted.melt(id_vars=['index', 'item', 'day', 'time'], value_vars=['value']).drop('variable', 1) print(df) index item value day time 0 0 P472 0.126 2011-12-08 00:00:00 1 1 P472 0.120 2011-12-08 00:30:00 2 2 P472 0.119 2011-12-08 01:00:00 3 3 P472 0.425 2011-12-08 01:30:00 4 4 P472 0.154 2011-12-08 02:00:00 ,并且'first'的组合是唯一的。如果没有,则数据透视表将聚合数据并丢失无法再次放在一起的信息。