python - 如何对 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'
. 我怎样才能做到这一点,以便列中的每个列表都按升序排序?
解决方案
尝试
df['batsmen'] = df['batsmen'].apply(sorted)
如果你想反转列表,你可以做
df['batsmen'] = df['batsmen'].apply(lambda x: sorted(x, reversed=True))
推荐阅读
- android - Flutter - Activity Tracker App - 步数、楼上/楼下、静止
- javascript - 角度基于权限的路由
- reactjs - 如何在 React 中获取 API 响应?
- json - 找不到名称“JSON”打字稿文件
- bash - 如何删除字符串中的 \r\n 并将字符串转换为数组
- node.js - 没有互联网访问时,纱线运行节点非常慢
- c - WIN32 - 除静态文本(标签)外的隐藏控件工作
- c# - 使用
给出空指针 - python - NameError:未定义名称“BertModel”,导入 Bert 提取摘要器时出错
- javascript - 如何将普通节点服务器转换为可执行文件?