簡體   English   中英

Pandas pivot_table 刪除行

[英]Pandas pivot_table drops rows

我有一個數據源,它為我提供以下結構的數據:

| 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 行。據我所知,數據足夠干凈,可以正常工作。

我覺得我在這里遺漏了一個關鍵細節,請幫我找到那個細節。

從一種方法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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM