假设我有一个巨大的 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())]
这将删除日期与找到的最小日期相同的所有行。
关于python - 如何有效地从 pandas DataFrame 中删除 "pythonically"行 "old"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48379879/