熊猫pivot_table滴行

死灵

我有一个数据源,可为我提供以下结构的数据:

| timestamp                | tagid       | value        |
|--------------------------|-------------|--------------|
| 01.01.2018 00:00:00:01   | 1           | 100.0        |
| 01.01.2018 00:00:00:01   | 1           | 101.0        |
| 01.01.2018 00:00:00:01   | 2           | 99.0         |
| 01.01.2018 00:00:00:02   | 2           | 120.0        |
| 01.01.2018 00:00:00:02   | 3           | 150.0        |
| 01.01.2018 00:00:00:02   | 3           | 12.0         |

我希望它看起来像以下

| 1       | 2       | 3       | As you can see, I get two rows, because I 
|---------|---------|---------| have two instances of every TAGID
|  100.0  |  99.0   |  150.0  |
|  101.0  |  120.0  |  12.0   |

这意味着我必须使用数据透视表。我的代码是:

pivot = df.pivot_table(index=['timestamp'], columns=['tagid'], values='value')

在一定程度上这是可行的。新的数据结构正是我想要的样子。问题是我缺少应该在其中的行。我已经尝试过标志“ fill_value”和“ dropna”,但没有效果。

这是我的思考过程:

我的(实际)数据集有9360行,我有144个单独的标签。这意味着144个单独的标签必须重复9360/144 = 65次。我已经手动验证过了。

无论如何,由于某种原因,我看不到少于65行,即35行。据我所知,数据足够干净,可以正常工作。

我觉得我在这里缺少关键的细节,请帮助我找到那个细节。

BEN_YO

一种方法从crosstab创建的index使用cumcount是你的问题的关键(PS:, ,也包括工作,创建键后)pivotpivot_tablestack unstack

pd.crosstab(df.groupby('tagid').cumcount(),df.tagid,df.value,aggfunc='mean')
Out[947]: 
tagid      1      2      3
row_0                     
0      100.0   99.0  150.0
1      101.0  120.0   12.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章