簡體   English   中英

在Pandas DataFrame中編號子序列

[英]Numbering subsequences in a Pandas DataFrame

我有一個由兩列組成的讀數 DataFrame: experimentvalue experiment鍵插入實驗數據框; 一行中有500行具有相同的experiment而不同的value代表同一實驗中的500個讀數,其中DF中的順序是獲取數據的順序。 然后500用於下一個實驗,依此類推。

我想在實驗中尋找基於時間的趨勢,因此我假設我想在0-499中標記每個點pos ,然后再標記groupby('pos') 如何創建該pos列,一個遞增的值,每次experiment重置時該值都會重置為0? 我猜這與experiment恆定行數相同。

如果我理解正確的話...

>>> df = pd.DataFrame({'Experiment' : [1,1,1,2,2,2,2,3,3,3], 
                       'Value' : np.random.randn(10)})
>>> df

   Experiment     Value
0           1 -0.924851
1           1 -0.599875
2           1  0.069982
3           2 -1.106909
4           2  0.463922
5           2  0.210568
6           2 -0.171456
7           3 -0.768618
8           3 -0.269928
9           3  0.055613

您將在groupby之后使用cumcount()獲得所需的效果:

>>> df['Position'] = df.groupby('Experiment').cumcount()
>>> df

   Experiment     Value  Position
0           1 -0.924851         0
1           1 -0.599875         1
2           1  0.069982         2
3           2 -1.106909         0
4           2  0.463922         1
5           2  0.210568         2
6           2 -0.171456         3
7           3 -0.768618         0
8           3 -0.269928         1
9           3  0.055613         2

暫無
暫無

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

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