检索DataFrame的整行

时间:2018-06-15 12:11:52

标签: python python-2.7 pandas datetime

我需要比较一个名为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()函数返回的值匹配的整行?

1 个答案:

答案 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