gpt4 book ai didi

python - 如何根据特定列中的值对 pandas 数据文件中的字符串进行排序?

转载 作者:行者123 更新时间:2023-12-04 00:14:02 26 4
gpt4 key购买 nike

我的 Python 程序生成一个 pandas 格式的数据文件

        Source    LogP    MolWt  HBA  HBD
0 cne_1 1.1732 263.405 3 1
1 cne_10 2.6639 197.237 2 0
2 cne_100 -0.2886 170.193 4 2
3 cne_1000 1.9644 304.709 5 1
4 cne_1001 1.4986 162.144 3 1
... ... ... ... ... ...
1031 cne_995 3.0179 347.219 4 2
1032 cne_996 4.8419 407.495 6 2
1033 cne_997 3.3560 354.524 3 1
1034 cne_998 7.5465 635.316 4 2
1035 cne_999 3.3514 389.556 4 1

我需要根据第二列(Source)根据数字对字符串进行排序,所以排序后的行的正确顺序应该是:cne_1,cne_2,cne_3,cne_4 et我试过用:

df_sorted = df.sort_values('Source', ascending=True)

但它并没有对行的顺序产生任何变化。

最佳答案

对于最后的 Pandas 版本,可以使用参数 key_ 拆分值并将值转换为整数:

df_sorted = df.sort_values('Source', key=lambda x: x.str.split('_').str[1].astype(int)) 

或者可以通过 Series.argsort 获取排序值的位置并传递给 DataFrame.iloc :

df_sorted = df.iloc[df['Source'].str.split('_').str[1].astype(int).argsort()]
print (df_sorted)
Source LogP MolWt HBA HBD
0 cne_1 1.1732 263.405 3 1
1 cne_10 2.6639 197.237 2 0
2 cne_100 -0.2886 170.193 4 2
1031 cne_995 3.0179 347.219 4 2
1032 cne_996 4.8419 407.495 6 2
1033 cne_997 3.3560 354.524 3 1
1034 cne_998 7.5465 635.316 4 2
1035 cne_999 3.3514 389.556 4 1
3 cne_1000 1.9644 304.709 5 1
4 cne_1001 1.4986 162.144 3 1

关于python - 如何根据特定列中的值对 pandas 数据文件中的字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65107749/

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