Python 如何使用键对列表中的多个dict进行排序(google babyname练习\u修改)
这是我从GoogleBabyName练习中创建的一个修改列表Python 如何使用键对列表中的多个dict进行排序(google babyname练习\u修改),python,Python,这是我从GoogleBabyName练习中创建的一个修改列表 [ [{'year': 1998}, {'rank': 1, 'boy': 'pic', 'girl': 'Emy'}, {'rank': 2, 'boy': 'badf', 'girl': 'Hdf'}, ...{'rank': 1000, 'boy': 'Jal', 'girl': 'Sky'}], [{'year': 1999}, {'rank': 1, 'boy': 'xic', 'girl': 'Ely'}, {'ran
[
[{'year': 1998}, {'rank': 1, 'boy': 'pic', 'girl': 'Emy'}, {'rank': 2,
'boy': 'badf', 'girl': 'Hdf'}, ...{'rank': 1000, 'boy': 'Jal', 'girl':
'Sky'}],
[{'year': 1999}, {'rank': 1, 'boy': 'xic', 'girl': 'Ely'}, {'rank': 2,
'boy': 'aacb', 'girl': 'Hah'}, ...{'rank': 1000, 'boy': 'Jal', 'girl':
'Sky'}],
[{'year': 1958}, {'rank': 1, 'boy': 'Mic', 'girl': 'Emy'}, {'rank': 2,
'boy': 'caob', 'girl': 'Han'}, ...{'rank': 1000, 'boy': 'Jal', 'girl':
'Sky'}],
....
]
如何使用不同的键对列表进行排序?例如年份、等级……我将列表dict转换为
pandas DataFrame
,这使得排序变得更容易
LIST=[[{'year': 1998}, {'rank': 1, 'boy': 'pic', 'girl': 'Emy'}, {'rank': 2,
'boy': 'badf', 'girl': 'Hdf'},{'rank': 1000, 'boy': 'Jal', 'girl':
'Sky'}],
[{'year': 1999}, {'rank': 1, 'boy': 'xic', 'girl': 'Ely'}, {'rank': 2,
'boy': 'aacb', 'girl': 'Hah'},{'rank': 1000, 'boy': 'Jal', 'girl':
'Sky'}],
[{'year': 1958}, {'rank': 1, 'boy': 'Mic', 'girl': 'Emy'}, {'rank': 2,'boy': 'caob', 'girl': 'Han'},{'rank': 1000, 'boy': 'Jal', 'girl':'Sky'}]]
DFLIST=[]
for A in LIST:
DFLIST.append(pd.DataFrame(A).ffill().dropna())
NEWDF=pd.concat(DFLIST,axis=0).reset_index(drop=True)
Out[540]:
boy girl rank year
0 pic Emy 1.0 1998.0
1 badf Hdf 2.0 1998.0
2 Jal Sky 1000.0 1998.0
3 xic Ely 1.0 1999.0
4 aacb Hah 2.0 1999.0
5 Jal Sky 1000.0 1999.0
6 Mic Emy 1.0 1958.0
7 caob Han 2.0 1958.0
8 Jal Sky 1000.0 1958.0
例如:按等级排序
NEWDF.sort_values(['year','rank'],ascending=[True,False])
Out[542]:
boy girl rank year
8 Jal Sky 1000.0 1958.0
7 caob Han 2.0 1958.0
6 Mic Emy 1.0 1958.0
2 Jal Sky 1000.0 1998.0
1 badf Hdf 2.0 1998.0
0 pic Emy 1.0 1998.0
5 Jal Sky 1000.0 1999.0
4 aacb Hah 2.0 1999.0
3 xic Ely 1.0 1999.0
这些数据的结构很糟糕。按年份排序的方法与按等级、男孩等排序的方法有点不同。您尝试过什么?我支持COLDSPEED所说的——这些数据的结构可以更好。欢迎来到StackOverflow。请注意,您应该已经研究过您的问题,并在发布之前尝试解决它。如果您有一个特定的问题,它应该包括您到目前为止尝试过的内容的详细信息以及一个文档中的相关代码。请阅读并@COLDSPEED谢谢。您对数据结构有什么建议吗?@XiaoboLi将您的数据结构更改为Dataframe
Brilliant!回答得好。@Wen非常感谢。