gpt4 book ai didi

python - 根据列(字符串)对 pandas 中的 CSV 进行排序

转载 作者:行者123 更新时间:2023-12-01 01:14:41 25 4
gpt4 key购买 nike

我正在对一列的 csv 进行排序,但现在这个字符串变得越来越复杂,我不知道如何对其进行排序

为什么我仍然坚持使用 pandas 就像我已经将排序后的值写回 csv

CSV
Snapshot,Status
21.001.1154_2019-01-04_14-37-47_1280868,Released
21.001.1183_2019-01-04_16-37-47_1280868,Unit Tested
21.001.1183_2019-01-04_14-37-47_1280868,Release

I used:
dd.sort_values(['Snapshot'],ascending=True)
du.to_csv(unit_file,header =True,index=False)

dataframe:
C:\Users\320047585\Sathish\Python>python sample.py
Before Sort
Snapshot Status
0 21.001.1154_2019-01-04_14-37-47_1280868 Released
1 21.001.1183_2019-01-04_16-37-47_1280868 Unit Tested
2 21.001.1183_2019-01-04_14-37-47_1280868 Release

并且返回排序值,在第一个之前_但是现在如果两个 id 相同,我需要检查日期,甚至日期是否相同,我需要按时排序,任何见解都会有很大帮助

Expected output
21.001.1154_2019-01-04_14-37-47_1280868,Released
21.001.1183_2019-01-04_14-37-47_1280868,Released
21.001.1183_2019-01-04_16-37-47_1280868,Unit Tested

提前致谢

最佳答案

使用s.str.split()获取 df.reindex() 后面的 to_be_sorted 值:

df_new=df.reindex(df.Snapshot.str.split("_").str[2].sort_values().index)
print(df_new)

Snapshot Status
0 21.001.1154_2019-01-04_14-37-47_1280868 Released
2 21.001.1183_2019-01-04_14-37-47_1280868 Released
1 21.001.1183_2019-01-04_16-37-47_1280868 Unit Tested

如果您需要同时考虑日期和时间,请使用:

data_new = data.join(data.Snapshot.str.split("_",expand=True)).sort_values(by=[0,1,2])
print(data_new)

Snapshot Status 1 2 \
0 21.001.1154_2019-01-04_14-37-47_1280868 Released 2019-01-04 14-37-47
2 21.001.1183_2019-01-04_14-37-47_1280868 Released 2019-01-04 14-37-47
1 21.001.1183_2019-01-04_16-37-47_1280868 Unit Tested 2019-01-04 16-37-47

3
0 1280868
2 1280868
1 1280868

当然,您可以删除不需要的列。

关于python - 根据列(字符串)对 pandas 中的 CSV 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54462791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com