У меня есть некоторые данные о высоте зондов в некоторых бассейнах.Нулевые значения высоты являются ложными, и я хочу заменить их средними значениями высоты зондов в том же бассейне.
import pandas as pd
index = [0,1,2,3,4,5]
s = pd.Series([0,2,2,0,1,6],index= index) #height values
t = pd.Series(['A','A','A','B','B','B'],index= index) #basins' names
df = pd.concat([s,t], axis=1, keys=['Height','Basin'])
print(df)
Height Basin
0 0 A
1 2 A
2 2 A
3 0 B
4 1 B
5 6 B
Я начну с создания DataFrame, который хранит средние высоты в бассейне:
#find height avergage in same basin
bound_df = df[df['Height']>0]
mean_height_df = bound_df.groupby(['Basin'])['Height'].mean()
print(mean_height_df)
Basin
A 2.0
B 3.5
И я пытаюсь заменить нулевые значения средними значениями соответствующего бассейна:
#substitute zeros w/ the average value
df.loc[df['Height']<=0, 'Height'] = mean_height_df.loc[mean_height_df['Basin'],'Height']
Но это выдает ошибку, которую я не понимаю:
Файл "pandas / _libs / hashtable_class_helper.pxi", строка 1218, в pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'Basin'
Чтоэто значит?Это проблема нарезки?
Есть ли альтернативный подход?