我需要比较一个名为last_login
的列,如果日期与今天的日期匹配,我想将整行检索到列表或类似内容:
def joined_today(self, df):
users_joined_today = []
date_joined = pd.DataFrame(df)
today = datetime.date.today()
for i in date_joined['last login']:
i = i.date()
if i == today:
users_joined_today.append(i)
return users_joined_today
我只是想知道什么是一种有效的方法来检索与joined_today()
函数返回的值匹配的整行?
答案 0 :(得分:1)
使用Pandas,您应该使用矢量化操作:
# convert series to datetime, if not already
df['last_login'] = pd.to_datetime(df['last_login'])
# calculate Boolean series mask
mask = df['last_login'].dt.normalize() == pd.to_datetime('today')
# apply mask
df_filtered = df[mask]
# optionally, convert to list of lists
df_filtered_L = df_filtered.values.tolist()
规范化datetime
系列会将时间组件展平为零,因此您可以将其与已经规范化的pd.to_datetime('today')
进行比较。
例如,pd.to_datetime('now').normalize() == pd.to_datetime('today')
会返回True
。