python - 如何有效地从 pandas DataFrame 中删除 "pythonically"行 "old"?

标签 python pandas

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

相关文章:

python - 在Python中将十进制数转换为类似\uxxxx的字符串

python - 如何合并多级(即 MultiIndex)数据帧?

python - 使用不一致的格式在 Pandas DataFrame 中展平 JSON

python - 如何在Python中获取值的组合?

python - Pip freeze 显示了一个奇怪的包版本

python - Django channel + 在发布请求后发送 websocket 消息

python - 使 python lambda func 在 Pandas Dataframe 中的 apply 方法内工作

python - Pandas:具有多种功能的分组和聚合

python - django-tables2:创建输入文本框

python - 如何加速 DatetimeIndex 处理?