猿问

如何以这种方式对值进行排序?

我有这样的桌子


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')


如何实现这样的表?


汪汪一只猫
浏览 89回答 2
2回答

喵喵时光机

我是一个Python新手,但让我一起思考(我相信这可以做得更整洁)。df = df.fillna(method='ffill')df = df.groupby(['Province', 'Country', 'Date']).sum()这给了我:Province         Country   Date     infectedBritish Columbia Canada    1/22/20         5                           1/23/20         1                 USA       1/22/20         7                           1/23/20        10New South Wales  Australia 1/22/20        12                           1/23/20         6Victoria         Australia 1/22/20        10                           1/23/20         2我有点预料到你在空的地方有值(至少这是我导入数据帧的)。我将所有这些更改为它们上方索引的值。NaNNaN然后a给了我上面的结果。不确定这是否是你所追求的,但也许它激发了一些想法=)groupby

米琪卡哇伊

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 pdbrics = pd.DataFrame(dict)print(brics)df = brics.set_index(['Country', 'Province', 'Date']).sort_values(['Country', 'Province', 'Date']) print(df)输出:           Province    Country     Date  infected0   New South Wales  Australia  1/22/20        121          Victoria  Australia  1/22/20        102  British Columbia     Canada  1/22/20         63                          USA  1/22/20         54   New South Wales  Australia  1/23/20         25          Victoria  Australia  1/23/20         36  British Columbia     Canada  1/23/20         47                          USA  1/23/20         5                                    infectedCountry   Province         DateAustralia New South Wales  1/22/20        12                           1/23/20         2          Victoria         1/22/20        10                           1/23/20         3Canada    British Columbia 1/22/20         6                           1/23/20         4USA                        1/22/20         5                           1/23/20         5
随时随地看视频慕课网APP

相关分类

Python
我要回答