ОК, теперь ваш ожидаемый результат имеет смысл
Сначала создайте функцию, которая использует np.sum (), это эквивалент суммы R (значение, na.rm = T)
def my_agg(df):
names = {
'result': np.sum(df['track_wind_component'] * df['ground_dist']) / np.sum(df['ground_dist'])
}
return pd.Series(names, index=['result'])
df.groupby('KEY_COLUMN').apply(my_agg)
out:
result
KEY_COLUMN
xyz -36.827331
Что не так с вашим кодом:
table['temp'] = (table['track_wind_component'] * table['ground_dist']) / table['ground_dist']
# this is just creating a column that is the exact same as
# table['track_wind_component'] because, for example, (x*y)/y = x
AVERAGE_WIND_COMPONENT = table.groupby(['KEY_COLUMN'])['temp'].sum()
# you are now essentially just grouping and summing the track_wind_column
то, что делает код R, принимает сумму (table['track_wind_component'] * table['ground_dist'])
, деленную на сумму (table['ground_dist'])
все, что сгруппировано по key_column
Код R также игнорирует значения NaN, поэтому я использовал np.sum()