我有一个数据框(例如下面的数据框),我对其进行了旋转以对其进行一些操作。
原始数据帧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?),但我无法解决如何做到这一点。有什么想法吗?
答案 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'
的组合是唯一的。如果没有,则数据透视表将聚合数据并丢失无法再次放在一起的信息。