У меня есть этот фрейм данных:
import pandas as pd
df = pd.DataFrame({'time': ['20:00', '23:00', '21:00', '21:00', '22:00', '22:00', '20:30'],
'traf': [100, 200, 25, 300, 100, 200, 100],
'num': [5, 3, 5, 6, 41, 34, 10]})
df = df.set_index(['time']).sort_index()
print(df)
traf num
time
20:00 100 5
20:30 100 10
21:00 25 5
21:00 300 6
22:00 100 41
22:00 200 34
23:00 200 3
Я пытаюсь написать функцию для агрегирования моего фрейма данных по значениям столбца df['traf']
, а затем сообщить о 1-м значении в столбце df['num']
, которое соответствует условию,
вот пример того, что я делаю, но я не уверен, что это правильно.Кроме того, поскольку я имею дело с фреймом данных очень большого размера, я не уверен, достаточно ли эффективен этот способ.
filter = df.groupby(["time"])['traf'].sum() >= 225
df.where(filter, inplace=True)
print(df)
traf num
time
20:00 NaN NaN
20:30 NaN NaN
21:00 25.0 5.0
21:00 300.0 6.0
22:00 100.0 41.0
22:00 200.0 34.0
23:00 NaN NaN
Итак, из приведенного выше результата я хочу, чтобы моим выводом было первое значение в столбце num, которое в данном случае не равно NaN 5.0.