gpt4 book ai didi

python - Pandas sort_value() 问题。应用关键参数时错误排序整数

转载 作者:行者123 更新时间:2023-12-04 00:50:15 29 4
gpt4 key购买 nike

大家好,我试图到处寻找这个问题,但我找不到解决方案。如果你能帮助我,我会很高兴。
所以,基本上我有这个数据集:

df = pd.DataFrame({"col1": ['xxx', 'xxx', 'xxx', 'kkk', 'www', 'www'],
"col2": [ 2020, 1994, 2013, 1000, 1996, 2021]})

df.dtypes
col1 object
col2 int64
dtype: object
并且我想以服装顺序排列第一列,以升序排列第二列。最终结果应如下所示:
    col1    col2
4 www 1996
5 www 2021
3 kkk 1000
0 xxx 1994
1 xxx 2013
2 xxx 2020
所以,为了实现这一点,我这样做:
d = {'xxx': 4, 'zzz':1, 'yyy':5, 'kkk':2, 'jjj':3, 'www':0} # to customize order 

df.sort_values(by = ['col1' , 'col2'], key = lambda x: x.map(d))
但我最终得到了这个:
    col1    col2
4 www 1996
5 www 2021
3 kkk 1000
0 xxx 2020
1 xxx 1994
2 xxx 2013
如果我只做:
df.sort_values(by = ['col1' , 'col2'])

col1 col2
3 kkk 1000
4 www 1996
5 www 2021
1 xxx 1994
2 xxx 2013
0 xxx 2020
col2 订购得很好。我真的不知道为什么我会遇到这个问题。有没有人经历过类似的事情?谢谢

最佳答案

可能的技巧是通过 col2 中的值扩展字典:

d = {'xxx': 4, 'zzz':1, 'yyy':5, 'kkk':2, 'jjj':3, 'www':0} # to customize order 
d = {**d, **dict(zip(df.col2, df.col2))}

df = df.sort_values(by = ['col1' , 'col2'], key = lambda x: x.map(d))
print (df)
col1 col2
4 www 1996
5 www 2021
3 kkk 1000
1 xxx 1994
2 xxx 2013
0 xxx 2020
get 的解决方案 - 如果没有匹配返回相同的值而不是 NaN :
df = df.sort_values(by = ['col1' , 'col2'], key = lambda x: x.map(lambda y: d.get(y, y)))
print (df)
col1 col2
4 www 1996
5 www 2021
3 kkk 1000
1 xxx 1994
2 xxx 2013
0 xxx 2020
使用辅助列的解决方案:
d = {'xxx': 4, 'zzz':1, 'yyy':5, 'kkk':2, 'jjj':3, 'www':0} 

df = df.assign(new=df['col1'].map(d)).sort_values(by=['new','col2']).drop('new', axis=1)
print (df)
col1 col2
4 www 1996
5 www 2021
3 kkk 1000
1 xxx 1994
2 xxx 2013
0 xxx 2020

关于python - Pandas sort_value() 问题。应用关键参数时错误排序整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67228411/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com