假设我有一个巨大的pandas.DataFrame
,列CreationDateTime
。此列包含字符串形式的日期时间,其值指示其各自行的"年龄"。
PRID CreationDate
0 2017-11-29 14:51:39.300
1 2017-11-29 15:52:08.963
2 2017-11-29 16:52:40.710
3 2017-11-29 17:53:16.207
4 2017-11-29 18:53:46.557
如何有效地删除集合中最早的一天的行?
到目前为止,我设法做的是:
d = pd.read_csv(base_dataset, delimiter=delimiter)
d['CreationDay'] = pd.to_datetime(d['CreationDateTime']).dt.date
g = d.groupby('CreationDay', sort=True)
g = iter(g)
_ = next(g) # ignore first day.
g = list(g)
d = pd.concat(d for day, d in g) # concat all others.
不过,它似乎不是很有效,我正在寻找更pythonic的东西,比如d.groupby('CreationDay', sort=True).skip(1).flat()
。
使用 pd.to_datetime
将列转换为datetime
:
v = pd.to_datetime(df.CreationDate).dt.date
接下来,找到最短日期并进行比较以获得口罩。使用掩码过滤df
。
df[v.gt(v.min())]
这将删除日期与找到的最小日期相同的所有行。