Я сканирую фрейм данных, сгруппированный по определенному идентификатору, и пытаюсь вернуть тип поверхности местоположений в зависимости от определенных длинных / латовых местоположений, которые есть в словаре.Проблема с набором данных заключается в том, что он создается со скоростью 100 кадров в секунду, поэтому я пытаюсь найти медианное значение, поскольку значения до и после этой точки неверны.
Я использую ноутбук pandas jupyter и имею
Это функция, которую я хочу получить из словаря.Это просто выдуманный пример
pitch_boundaries = {
'Astro': {'max_long': -6.123456, 'min_long': -6.123456,
'max_lat': 53.123456, 'min_lat': 53.123456},
}
def get_loc_name(loc_df, pitch_boundaries):
for pitch_name, coord_limits in pitch_boundaries.items():
between_long_limits = loc_df['longitude'].median().between(coord_limits['min_long'], coord_limits['max_long'])
between_lat_limits = loc_df['latitude'].median().between(coord_limits['min_lat'], coord_limits['max_lat'])
if between_long_limits.any() and between_lat_limits.any():
return pitch_name
# If we get here then there is no pitch.
назовите его здесь
def makeAverageDataFrame(df):
pitchBounds = get_loc_name(df, pitch_boundaries)
i = len(df_average.index)
df_average.loc[i] = [pitchBounds]
наконец, где возникнут ошибки
for region, df_region in df_Will.groupby('session_id'):
makeAverageDataFrame(df_region)
Фактические результаты
# AttributeError: 'float' object has no attribute 'between'
или если я удалю .median()
: None
Мне нужен новый фрейм данных с чем-то вроде
|surface|
|Astro|
|Grass|
|Astro|