Pandas pivot_table删除行

2024-09-25 12:30:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

| 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         |

我希望它看起来像下面这样

^{pr2}$

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

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

这在一定程度上是可行的。新的数据结构正是我想要的。问题是我缺少应该在那里的行。我已经试过了“fill\u value”和“dropna”标志,但是没有效果。在

这是我的思考过程:

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

无论如何,由于某些原因,我看不到我得到的行数少于65行,即35行。 据我所知,这些数据已经足够干净了。在

我觉得我遗漏了一个重要的细节,请帮我找到那个细节。在


Tags: columns数据代码dfindexvaluetable结构
1条回答
网友
1楼 · 发布于 2024-09-25 12:30:49

crosstab开始,通过使用cumcount创建{}是问题的关键(PS:,pivotpivot_tablestackunstack也可以,在创建密钥之后)

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

相关问题 更多 >