通过pandas中的区间坐标计算平均值
Calculate mean value by interval coordinates in pandas
我有一个数据框,例如:
Name Position Value
A 1 10
A 2 11
A 3 10
A 4 8
A 5 6
A 6 12
A 7 10
A 8 9
A 9 9
A 10 9
A 11 9
A 12 9
我想为每个 3 个位置的间隔计算值的平均值。
并使用 start
和 end
坐标(然后长度为 3)和 Mean_value
列创建一个新的 df。
Name Start End Mean_value
A 1 3 10.33 <---- here this is (10+11+10)/3 = 10.33
A 4 6 8.7
A 7 9 9.3
A 10 13 9
有人知道使用 pandas 吗?
每 Name
组获取每 3 行(如果存在)的解决方案 - 首先通过 GroupBy.cumcount
通过整数除法获取计数器并将其传递给命名聚合:
g = df.groupby('Name').cumcount() // 3
df = df.groupby(['Name',g]).agg(Start=('Position','first'),
End=('Position','last'),
Value=('Value','mean')).droplevel(1).reset_index()
print (df)
Name Start End Value
0 A 1 3 10.333333
1 A 4 6 8.666667
2 A 7 9 9.333333
3 A 10 12 9.000000
我有一个数据框,例如:
Name Position Value
A 1 10
A 2 11
A 3 10
A 4 8
A 5 6
A 6 12
A 7 10
A 8 9
A 9 9
A 10 9
A 11 9
A 12 9
我想为每个 3 个位置的间隔计算值的平均值。
并使用 start
和 end
坐标(然后长度为 3)和 Mean_value
列创建一个新的 df。
Name Start End Mean_value
A 1 3 10.33 <---- here this is (10+11+10)/3 = 10.33
A 4 6 8.7
A 7 9 9.3
A 10 13 9
有人知道使用 pandas 吗?
每 Name
组获取每 3 行(如果存在)的解决方案 - 首先通过 GroupBy.cumcount
通过整数除法获取计数器并将其传递给命名聚合:
g = df.groupby('Name').cumcount() // 3
df = df.groupby(['Name',g]).agg(Start=('Position','first'),
End=('Position','last'),
Value=('Value','mean')).droplevel(1).reset_index()
print (df)
Name Start End Value
0 A 1 3 10.333333
1 A 4 6 8.666667
2 A 7 9 9.333333
3 A 10 12 9.000000