Python 根据列(字符串)按熊猫排列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 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:
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