[英]Python Pandas data binning
如有任何不明之處,我們深表歉意。
我正在與一個數據框架的熊貓一起工作,感謝社區的任何投入。 這是數據框的外觀……...在此處查看屏幕截圖
我的目標是創建一個獨立的數據框,基於5的T增量將x和y分別平均到倉中。
例如......對於范圍為0-5的T =>將對應的x,y值平均到x1bin,y1bin,然后對於范圍5-10中的T =>將對應的x,y值平均為x2bin,y2bin ..... for T在10-15范圍內=>將相應的x,y值平均為x3bin,y3bin………並在tan135-140中將其一直增加到T。 同時,將數據索引到ID…。意味着將數據保留為ID為1的ID。 您可能已經注意到,會有一些具有NAN值的bin,因為存在對應的T,這很好……。
最后,了解我計算T……的方式可能會有所幫助,這恰好是每個ID的滾動時間……,並且從0開始每個新ID
df ['T'] = df.groupby(['ID'])。A.apply(lambda x:x-x.iloc [0])/ np.timedelta64(1,'m')
先感謝您…。
假設df為您的數據框
t_range = 5
t_ranges = np.arange(0,df['T'].max()+1,t_range)
new_df = pd.DataFrame(columns=['t_range','x_avg','y_avg'])
for i in range(1,len(t_ranges)):
a = df[df['T']>=t_ranges[i-1]][df['T']<t_ranges[i]]
x_avg = a['X'].mean()
y_avg = a['Y'].mean()
new_df = new_df.append({'t_range':t_range[i],'x_avg':x_avg,'y_avg:y_avg},ignore_index=True)
樣本數據df
T X Y
0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9
7 8 9 1
使用t_range = 2
即0-2,2-4,4-6
樣本輸出new_df
t_range x_avg y_avg
0 2.0 2.5 3.5
1 4.0 4.5 5.5
2 6.0 6.5 7.5
編輯:更改x_avg和y_avg,如下所示,它們將忽略數據中存在的所有NaN,使用的t_range = 2
x_avg = a['X'].dropna().mean()
y_avg = a['Y'].dropna().mean()
樣本數據
T X Y
0 1 2.0 6.0
---------------- t<2
1 2 NaN NaN
2 3 7.0 8.0
---------------- t<4 and t>=2
3 4 10.0 11.0
4 5 NaN 14.0
---------------- t<6 and t>=4
5 6 1.0 NaN
6 7 12.0 13.0
---------------- t<8 and t>=6
7 8 1.0 2.0
產量
t_range x_avg y_avg
0 2.0 2.0 6.0
1 4.0 7.0 8.0
2 6.0 10.0 12.5
3 8.0 6.5 13.0
我希望這能回答您在評論中的第二個查詢。 如果您認為答案有幫助,請單擊該答案旁邊的對勾標記,以將其標記為已接受
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.