Я работаю с DataFrame вроде следующего:панды - как фильтровать «наиболее частые» объекты Datetime
User_ID Datetime
01 2014-01-01 08:00:00
01 2014-01-02 09:00:00
02 2014-01-02 10:00:00
02 2014-01-03 11:00:00
03 2014-01-04 12:00:00
04 2014-01-04 13:00:00
05 2014-01-02 14:00:00
Я хотел бы отфильтровать пользователей при определенных условиях на основе столбцов кодировки даты и времени, например, фильтровать только пользователей с одного вхождения/месяц, или только пользователей с вхождений только в летнее время и т.д.
До сих пор я группе ДХ с:
g = df.groupby(['User_ID','Datetime']).size()
получившими «следы» во время каждого пользователя :
User_ID Datetime
01 2014-01-01 08:00:00
2014-01-02 09:00:00
02 2014-01-02 10:00:00
2014-01-03 11:00:00
03 2014-01-04 12:00:00
04 2014-01-04 13:00:00
05 2014-01-02 14:00:00
Затем я применил маску для фильтрации, например, пользователи с более чем одной трассы:
mask = df.groupby('User_ID')['Datetime'].apply(lambda g: len(g)>1)
df = df[df['User_ID'].isin(mask[mask].index)]
Итак, это прекрасно. Я ищу функцию вместо lambda g: len(g)>1
, способную фильтровать пользователей в разных условиях, как я уже говорил. В частности, пользователи фильтров с одним вступлением/месяцем.
Thanks Ed! Что делать, если я хочу фильтровать пользователей с появлением только через несколько месяцев? Могу ли я применить некоторые условия dt.month == june? –
Я бы просто отфильтровал df, скорее сделаю это в группе, если это то, что вы хотели, я имею в виду для этого случая: 'df [df ['Datetime']. Dt.month == 5]' будет делать то же самое – EdChum