pandas - 按时间戳对行进行排序
问题描述
我知道这应该很容易,但由于某种原因它不起作用。我有一个csv文件如下:
message,name,userID,period,@timestamp,event_count
"Successful Logon for user "" user""",Logon Attempt,user,period_1,2021-05-11 09:52:30,1
"Successful Logon for user "" user""",Logon Attempt,user,period_1,2021-05-10 06:04:24,1
我正在尝试根据时间戳对行进行排序。
首先认为我所做的是将其转换@timestamp
为如下日期格式并对值进行排序
f['@timestamp'] = pd.to_datetime(f['@timestamp'], format="%Y-%m-%d %H:%M:%S").sort_values()
但是当我运行脚本时,结果仍然没有根据时间戳按任何顺序排序
关于我做错了什么的任何建议?对不起,我还是熊猫的新手
编辑:
甚至使用:
f['@timestamp'] = pd.to_datetime(f['@timestamp'], format="%Y-%m-%d %H:%M:%S")
f = f.sort_values(by='@timestamp')
输出始终相同。值未排序。
使用更新后的脚本,是我运行脚本,输出还是如下:
message,name,userID,period,@timestamp,event_count
"Successful Logon for user "" user""",Logon Attempt,user,period_1,2021-05-11 09:52:30,1
"Successful Logon for user "" user""",Logon Attempt,user,period_1,2021-05-10 06:04:24,1
解决方案
是否对 的输出进行排序或打乱都没有关系pd.to_datetime(…)
,一旦分配给您的列以匹配索引,它将重新排序。
首先分配给列,然后排序:
df['timestamp'] = pd.to_datetime(…)
df = df.sort_values(by='timestamp')
例子
让我们从一个未排序的数据框开始
>>> df = pd.DataFrame({'date': ['2021-07-29', '2000-01-01', '2020-02-01']})
>>> df
date
0 2021-07-29
1 2000-01-01
2 2020-02-01
应用日期时间并排序:
>>> df['date'] = pd.to_datetime(df['date'])
>>> df = df.sort_values(by='date')
date
1 2000-01-01
2 2020-02-01
0 2021-07-29
它适用于您的数据集:
df['@timestamp'] = pd.to_datetime(df['@timestamp'])
df = df.sort_values(by='@timestamp')
df
message name userID period @timestamp event_count
1 Successful Logon for user " user" Logon Attempt user period_1 2021-05-10 06:04:24 1
0 Successful Logon for user " user" Logon Attempt user period_1 2021-05-11 09:52:30 1
推荐阅读
- google-sheets - Google表格条件格式范围与单元格相比
- php - Laravel 5 imagepng无法正常工作
- babeljs - 使用 babel-cli 时如何将选项传递给插件
- ios - 如何让我的 iOS APP 直接将文件共享到另一个 APP,如工作流“打开方式”操作
- c - 为什么 stddef 中的 size_t 而不是 stdint?
- amazon-web-services - AWS 线索者 - 了解内部负载均衡器和入口
- r - 根据行号为列表中各种数据框的行分配值
- c# - Linq 邮编问题
- angular - 如何仅显示微调器激活的文本框Angular 4
- ionic-framework - 带有条纹和 woocommerce-api 的 Ionic 3