如何高效"pythonically"地从熊猫数据帧中删除"old"行?



假设我有一个巨大的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())]

这将删除日期与找到的最小日期相同的所有行。

最新更新