首页 > 解决方案 > 如何对 DataFrame 列中的列表元素进行排序

问题描述

我有一个数据框如下:

        venue        innings     batting_team                  bowling_team            score       batsmen
M Chinnaswamy Stadium   1   Kolkata Knight Riders          Royal Challengers Bangalore  61     [SC Ganguly, BB McCullum, RT Ponting]
M Chinnaswamy Stadium   2   Royal Challengers Bangalore    Kolkata Knight Riders        26     [R Dravid, W Jaffer, V Kohli, JH Kallis, CL White, MV Boucher]
Feroz Shah Kotla        1   Rajasthan Royals               Delhi Daredevils             40     [T Kohli, YK Pathan, SR Watson, M Kaif]
Feroz Shah Kotla        2   Delhi Daredevils               Rajasthan Royals             55     [G Gambhir, V Sehwag, S Dhawan]
Wankhede Stadium        1   Mumbai Indians                 Royal Challengers Bangalore  47     [L Ronchi, ST Jayasuriya, DJ Thornely, RV Uthappa, PR Shah]
Wankhede Stadium        2   Royal Challengers Bangalore    Mumbai Indians               40     [S Chanderpaul, R Dravid, LRPL Taylor]
Eden Gardens            1   Deccan Chargers                Kolkata Knight Riders        39     [AC Gilchrist, Y Venugopal Rao, VVS Laxman, A Symonds]
Eden Gardens            2   Kolkata Knight Riders          Deccan Chargers              26     [WP Saha, BB McCullum, RT Ponting, SC Ganguly, DJ Hussey]
Sawai Mansingh Stadium  1   Kings XI Punjab                Rajasthan Royals             54     [K Goel, JR Hopes, KC Sangakkara]
Sawai Mansingh Stadium  2   Rajasthan Royals               Kings XI Punjab              53     [M Kaif, YK Pathan, Kamran Akmal, SR Watson, DS Lehmann]

可以看出,该batsmen列将列表作为其元素。现在我需要对每个列表进行排序。我使用了代码

df['batsmen'] = df['batsmen'].sort()

但我得到的错误是Series object as no attribute 'sort'. 我怎样才能做到这一点,以便列中的每个列表都按升序排序?

标签: pythonpandasdataframesorting

解决方案


尝试

df['batsmen'] = df['batsmen'].apply(sorted)

如果你想反转列表,你可以做

df['batsmen'] = df['batsmen'].apply(lambda x: sorted(x, reversed=True))

推荐阅读