連続するデータの変化の回数を数える
連続するデータの変化の回数を数える。
以下のテストデータでarea毎にvalの値が変化する回数を数える
テストデータ
import pandas as pd
dt={
"area" :[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2],
"seq" :[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8],
"val" :[1,2,2,1,3,3,3,1,1,1,2,2,2,1,1,2]
}
df=pd.DataFrame(dt)
print(df.to_markdown())
import pandas as pd
dt={
"area" :[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2],
"seq" :[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8],
"val" :[1,2,2,1,3,3,3,1,1,1,2,2,2,1,1,2]
}
df=pd.DataFrame(dt)
print(df.to_markdown())
area | seq | val | |
---|---|---|---|
0 | 1 | 1 | 1 |
1 | 1 | 2 | 2 |
2 | 1 | 3 | 2 |
3 | 1 | 4 | 1 |
4 | 1 | 5 | 3 |
5 | 1 | 6 | 3 |
6 | 1 | 7 | 3 |
7 | 1 | 8 | 1 |
8 | 2 | 1 | 1 |
9 | 2 | 2 | 1 |
10 | 2 | 3 | 2 |
11 | 2 | 4 | 2 |
12 | 2 | 5 | 2 |
13 | 2 | 6 | 1 |
14 | 2 | 7 | 1 |
15 | 2 | 8 | 2 |
期待する答え
area 1:5個
area 2:4個
変化の回数のカウント
#変化点を求める
df.sort_values(["area" , "seq"] ,inplace=True)
df["cnt"]=df.groupby(["area"])["val"].diff().apply(lambda x:0 if x==0 else 1 )
print("変化点")
print(df.to_markdown())
#変化の回数
df2=df.groupby(["area"]).cnt.sum()
print("変化の回数")
print(df2.to_markdown())
変化点
#変化点を求める
df.sort_values(["area" , "seq"] ,inplace=True)
df["cnt"]=df.groupby(["area"])["val"].diff().apply(lambda x:0 if x==0 else 1 )
print("変化点")
print(df.to_markdown())
#変化の回数
df2=df.groupby(["area"]).cnt.sum()
print("変化の回数")
print(df2.to_markdown())
area | seq | val | cnt | |
---|---|---|---|---|
0 | 1 | 1 | 1 | 1 |
1 | 1 | 2 | 2 | 1 |
2 | 1 | 3 | 2 | 0 |
3 | 1 | 4 | 1 | 1 |
4 | 1 | 5 | 3 | 1 |
5 | 1 | 6 | 3 | 0 |
6 | 1 | 7 | 3 | 0 |
7 | 1 | 8 | 1 | 1 |
8 | 2 | 1 | 1 | 1 |
9 | 2 | 2 | 1 | 0 |
10 | 2 | 3 | 2 | 1 |
11 | 2 | 4 | 2 | 0 |
12 | 2 | 5 | 2 | 0 |
13 | 2 | 6 | 1 | 1 |
14 | 2 | 7 | 1 | 0 |
15 | 2 | 8 | 2 | 1 |
変化の回数
area | cnt |
---|---|
1 | 5 |
2 | 4 |
Author And Source
この問題について(連続するデータの変化の回数を数える), 我々は、より多くの情報をここで見つけました https://qiita.com/hirayama_yuuichi/items/6695c99550fd41409970著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .