通过ID和时间旋转具有混合值类型的pandas表

时间:2018-04-24 17:14:36

标签: python pandas dataframe

我有一个表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按时间组合行。得到上面的决赛桌。

  • 那么如何在保持ID和时间的同时直接将df转换为cat_df
  • 或者如何合并mid_df中的行以确保每个时间步的最小NA?
  • 聚合:对于这两种方法,如果我想按小时/数据汇总数据,我将如何处理值的混合数据类型?我想平均数字并选择最后的分类
  • 此外,有没有办法确定聚合的时间段,以确保最少的NA?

1 个答案:

答案 0 :(得分:0)

对于ID未继续显示,您想将它们分为两组,然后我们需要创建一个键(使用cumsum)以帮助拆分,first将返回{ {1}}每列的值不为空

first