假设我在下面有以下数据框:
userid recorddate
0 tom 2018-06-12
1 nick 2019-06-01
2 tom 2018-02-12
3 nick 2019-06-02
我将如何确定和提取每个用户最早记录日期的值。即Tom的2018-02-12和nick的2019-06-01?
此外,如果我添加了一个参数,例如最早的记录日期大于2019-01-01,该怎么办?
答案 0 :(得分:1)
这里是loc
df['recorddate'] = pd.to_datetime(df['recorddate'])
date = pd.to_datetime("2019-01-01")
df.loc[df['recorddate']>date]
输出将是:
userid recorddate
1 nick 2019-06-01
3 nick 2019-06-02
您可以将大号更改为等号或小号以获得不同的结果。 干杯
答案 1 :(得分:0)
如果将日期字符串转换为datetime对象,一切将变得更加容易。完成后,您可以对它们进行排序,然后记录每个用户ID的第一条记录。此外,您可以通过在条件中传递日期字符串来过滤数据框,并以相同的方式进行操作。
df['recorddate'] = pd.to_datetime(df['recorddate'])
df.sort_values(by='recorddate', inplace=True)
df.groupby('userid').first()
输出
recorddate
userid
nick 2019-06-01
tom 2018-02-12
或
df[df['recorddate']>'2019-01-01'].groupby('userid').first()