[英]Numbering subsequences in a Pandas DataFrame
我有一個由兩列組成的讀數 DataFrame: experiment
和value
。 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.