Сортировка CSV в пандах по столбцу (строке) - PullRequest
0 голосов
/ 31 января 2019

Я сортирую CSV по одному столбцу, но теперь эта строка усложняется, и я не уверен, как ее отсортировать

Почему я до сих пор придерживаюсь панд, как будто я записал отсортированные значения обратно в 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

И это вернуло отсортированные значения, перед первым _но теперь, если оба идентификатора одинаковы, мне нужно проверить дату, а четные даты одинаковы, мне нужно отсортировать по времени, любые выводы будут очень полезны

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

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Так как вся строка должна быть отсортирована, я добавил незначительное изменение в ответ 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  
0 голосов
/ 31 января 2019

Используйте s.str.split(), чтобы получить значение to_be_sorted , следующее за df.reindex():

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  

Конечно, тогда вы можете удалить ненужные столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...