Как отсортировать значения таким образом? - PullRequest
1 голос
/ 26 марта 2020

У меня есть такая таблица

Province            Country       Date      infected
New South Wales    Australia    1/22/20        12
Victoria           Australia    1/22/20        10
British Columbia   Canada       1/22/20         5
                   USA          1/22/20         7
New South Wales    Australia    1/23/20         6
Victoria           Australia    1/23/20         2
British Columbia   Canada       1/23/20         1
                   USA          1/23/20         10

Теперь я хочу преобразовать эту таблицу в такую ​​

Province            Country       Date      infected
New South Wales    Australia    1/22/20        12
                                1/23/20         6
Victoria           Australia    1/22/20        10
                                1/23/20         2
British Columbia   Canada       1/22/20         5
                                1/23/20         1    
                   USA          1/22/20         7 
                                1/23/20         10

Я пробовал df.sort_values('Date'), но не повезло.

Как я могу реализовать такую ​​таблицу?

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Я Python ладья ie, но позвольте мне подумать (я уверен, что это можно сделать аккуратнее).

df = df.fillna(method='ffill')
df = df.groupby(['Province', 'Country', 'Date']).sum()

Это дало мне:

Province         Country   Date     infected
British Columbia Canada    1/22/20         5
                           1/23/20         1
                 USA       1/22/20         7
                           1/23/20        10
New South Wales  Australia 1/22/20        12
                           1/23/20         6
Victoria         Australia 1/22/20        10
                           1/23/20         2

Я ожидал, что у вас есть NaN значения в пустых местах (по крайней мере, это то, что я импортировал в фрейм данных). Я изменил все эти NaN на значения из индекса над ними.

Затем groupby дал мне результат выше. Не уверен, что это то, что вы хотели, но, возможно, это вызвало некоторые идеи =)

1 голос
/ 26 марта 2020
dict = {"Province": ["New South Wales", "Victoria", "British Columbia", "", "New South Wales", "Victoria", "British Columbia", ""],
       "Country": ["Australia", "Australia", "Canada", "USA", "Australia", "Australia", "Canada", "USA"],
       "Date": ["1/22/20", "1/22/20", "1/22/20", "1/22/20", "1/23/20", "1/23/20", "1/23/20", "1/23/20"],
       "infected": [12, 10, 6, 5, 2, 3, 4, 5] }

import pandas as pd
brics = pd.DataFrame(dict)
print(brics)

df = brics.set_index(['Country', 'Province', 'Date']).sort_values(['Country', 'Province', 'Date']) 
print(df)

Выход:

           Province    Country     Date  infected
0   New South Wales  Australia  1/22/20        12
1          Victoria  Australia  1/22/20        10
2  British Columbia     Canada  1/22/20         6
3                          USA  1/22/20         5
4   New South Wales  Australia  1/23/20         2
5          Victoria  Australia  1/23/20         3
6  British Columbia     Canada  1/23/20         4
7                          USA  1/23/20         5
                                    infected
Country   Province         Date
Australia New South Wales  1/22/20        12
                           1/23/20         2
          Victoria         1/22/20        10
                           1/23/20         3
Canada    British Columbia 1/22/20         6
                           1/23/20         4
USA                        1/22/20         5
                           1/23/20         5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...