我有一个表df
的类型(非实际表),其值为混合类型:
ID | Time | Category | Value
ix ----------------------------------------------------
0 457 | 2010-09-04 15:00 | Name | 'Foo'
1 542 | 2010-09-04 15:00 | Name | 'Bar'
2 542 | 2010-09-04 15:00 | Sub | 0.2
3 542 | 2010-09-04 15:00 | Age | 18
4 457 | 2010-09-04 15:40 | Sub | 0.7
5 457 | 2010-09-04 15:40 | Age | 20
现在我想将此表转换为cat_df
,以便每个类别都是自己的列,其值为行,并且首先将ID编入索引,然后在特定ID中将时间索引为: / p>
ID | Time | Name | Sub | Age
ix ----------------------------------------------------
0 457 | 2010-09-04 15:00 | 'Foo' | - | -
1 457 | 2010-09-04 15:40 | - | 0.7 | 20
2 542 | 2010-09-04 15:00 | 'Bar' | 0.2 | 18
Dash表示NA/NoneType
。每当我使用df.pivot
ID和时间作为索引时,我就会继续出现重复错误。所以我运行了以下代码:
mid_df = df.pivot(columns='Category', values='Value')
我得到了下表作为mid_df
的结果:
Name | Sub | Age
ix ------------------------------
0 'Foo' | - | -
1 'Bar' | - | -
2 - | 0.2 | -
3 - | - | 18
4 - | 0.7 | -
5 - | - | 20
哪个好,我猜?我可以通过加入ix
来添加ID和时间数据。但是我想为每个ID按时间组合行。得到上面的决赛桌。
df
转换为cat_df
?mid_df
中的行以确保每个时间步的最小NA? 答案 0 :(得分:0)
对于ID未继续显示,您想将它们分为两组,然后我们需要创建一个键(使用cumsum
)以帮助拆分,first
将返回{ {1}}每列的值不为空
first