gpt4 book ai didi

python - 使用 pandas,每个子集的步长为 y 的每 x 行的平均值

转载 作者:行者123 更新时间:2023-12-04 01:06:13 26 4
gpt4 key购买 nike

我有一个像这样的 Pandas 数据框:

Subset  Position    Value
1 1 2
1 10 3
1 15 0.285714
1 43 1
1 48 0
1 89 2
1 132 2
1 152 0.285714
1 189 0.133333
1 200 0
2 1 0.133333
2 10 0
2 15 2
2 33 2
2 36 0.285714
2 72 2
2 132 0.133333
2 152 0.133333
2 220 3
2 250 8
2 350 6
2 750 0

我想知道如何获得 Pandas 中每个子集步长为“y”的每个“x”行的平均值?

例如,每个子集中值列的每 5 行(步长 =2)的平均值如下:

Subset  Start_position  End_position    Mean
1 1 48 1.2571428
1 15 132 1.0571428
1 48 189 0.8838094
2 1 36 0.8838094
2 15 132 1.2838094
2 36 220 1.110476
2 132 350 3.4533332

最佳答案

这是你要找的吗:

df = pd.DataFrame({'Subset': [1]*10+[2]*12,
'Position': [1,10,15,43,48,89,132,152,189,200,1,10,15,33,36,72,132,152,220,250,350,750],
'Value': [2,3,.285714,1,0,2,2,.285714,.1333333,0,0.133333,0,2,2,.285714,2,.133333,.133333,3,8,6,0]})

averaged_df = pd.DataFrame(columns=['Subset', 'Start_position', 'End_position', 'Mean'])

window = 5
step_size = 2
for subset in df.Subset.unique():
subset_df = df[df.Subset==subset].reset_index(drop=True)
for i in range(0,len(df),step_size):
window_rows = subset_df.iloc[i:i+window]
if len(window_rows) < window:
continue

window_average = {'Subset': window_rows.Subset.loc[0+i],
'Start_position': window_rows.Position[0+i],
'End_position': window_rows.Position.iloc[-1],
'Mean': window_rows.Value.mean()}
averaged_df = averaged_df.append(window_average,ignore_index=True)

关于代码的一些说明:

  • 它假定所有子集在原始 df 中都是有序的(1,1,2,1,2,2 的行为就好像它是 1,1,1,2, 2,2)
  • 如果剩下一个比窗口小的组,它将跳过它(例如 1, 132, 200, 0,60476 不包括在内`)

关于python - 使用 pandas,每个子集的步长为 y 的每 x 行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66359822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com