Python 根据列(字符串)按熊猫排列CSV
我将csv wrt排序为一列,但现在这个字符串变得复杂,我不知道如何排序 为什么我仍然坚持使用pandas,就像我已经将排序后的值写回csv一样Python 根据列(字符串)按熊猫排列CSV,python,pandas,sorting,Python,Pandas,Sorting,我将csv wrt排序为一列,但现在这个字符串变得复杂,我不知道如何排序 为什么我仍然坚持使用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:
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
在first_之前,它返回了排序的值,但现在如果两个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
提前感谢用于获取待排序值,后跟:
如果您需要同时考虑日期和时间,请使用:
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
当然,您可以删除不需要的列。因为整个字符串都必须排序,所以我对anky的答案添加了一个小改动
Before
df_new = df.join(df.Snapshot.str.split("_",expand=True).drop(0,1)).sort_values(by=[1,2])
After
data_new = data.join(data.Snapshot.str.split("_",expand=True)).sort_values(by=[0,1,2])
它考虑整个字符串
更有趣的是
data.sort_values(['Snapshot'],ascending=True)
Also doing the perfect sorting..! it ignores underscores and dots
我认为您需要使用reindex拆分字符串,请检查下面的内容answer@Sathishkumar很高兴,我可以帮忙。如果它对你有帮助,请考虑回答。谢谢
data.sort_values(['Snapshot'],ascending=True)
Also doing the perfect sorting..! it ignores underscores and dots