为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

汪汪一只猫 2022-09-13 19:42:32
我有这样的桌子Province            Country       Date      infectedNew South Wales    Australia    1/22/20        12Victoria           Australia    1/22/20        10British Columbia   Canada       1/22/20         5                   USA          1/22/20         7New South Wales    Australia    1/23/20         6Victoria           Australia    1/23/20         2British Columbia   Canada       1/23/20         1                   USA          1/23/20         10现在我想将该表转换为如下所示Province            Country       Date      infectedNew South Wales    Australia    1/22/20        12                                1/23/20         6Victoria           Australia    1/22/20        10                                1/23/20         2British Columbia   Canada       1/22/20         5                                1/23/20         1                       USA          1/22/20         7                                 1/23/20         10我试过了,但没有运气。df.sort_values('Date')如何实现这样的表?
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

我是一个Python新手,但让我一起思考(我相信这可以做得更整洁)。


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

我有点预料到你在空的地方有值(至少这是我导入数据帧的)。我将所有这些更改为它们上方索引的值。NaNNaN


然后a给了我上面的结果。不确定这是否是你所追求的,但也许它激发了一些想法=)groupby


查看完整回答
反对 回复 2022-09-13
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

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


查看完整回答
反对 回复 2022-09-13
  • 2 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信