gpt4 book ai didi

python Pandas : Sorting Columns

转载 作者:太空狗 更新时间:2023-10-30 02:38:26 25 4
gpt4 key购买 nike

我正在尝试对 .csv 文件的列进行排序。这些是列的名称和顺序:

'Unnamed: 0', 'Unnamed: 1', 
'25Mg BLK', '25Mg 1', '25Mg 2',
'44Ca BLK', '44Ca 1', '44Ca 2',
'137Ba BLK', '137Ba 1', '137Ba 2',
'25Mg 3', '25Mg 4', '25Mg 5',
'44Ca 3', '44Ca 4', 44Ca 5',
'137Ba 3', '137Ba 4', '137Ba 5',

这是我想要的顺序:

'Unnamed: 0', 'Unnamed: 1', 
'25Mg BLK', '25Mg 1', '25Mg 2', '25Mg 3', '25Mg 4', '25Mg 5',
'44Ca BLK', '44Ca 1', '44Ca 2', '44Ca 3', '44Ca 4', 44Ca 5',
'137Ba BLK', '137Ba 1', '137Ba 2', '137Ba 3', '137Ba 4', '137Ba 5',

目前我的代码是这样的:

import pandas as pd

df = pd.read_csv("real_data.csv", header=2)

df2 = df.reindex_axis(sorted(df.columns), axis=1)

print(df2)

df2.to_csv("sorted.csv")

使用我当前的代码,我得到以下列顺序的结果:

'137Ba 1', '137Ba 2', '137Ba 3', '137Ba 4', '137Ba 5', '137Ba BLK',
'25Mg 1', '25Mg 2', '25Mg 3', '25Mg 4', '25Mg 5', '25Mg BLK',
'44Ca 1', '44Ca 2', '44Ca 3', '44Ca 4', '44Ca 5', '44Ca BLK'

所以我已经知道我必须将一个函数传递给已排序的函数以指定我希望它如何对其进行排序,但我想不出一个函数可以做到这一点。

非常感谢任何输入!

最佳答案

使用帮助器DataFrame,对列进行排序,然后通过a.indexreindex:

c = df.columns
a = c[2:].to_series().str.extract('(\d+)([a-zA-Z]+)\s+(\d*)', expand=True)
#convert ints
a[0] = a[0].astype(int)
#convert to floats, non exis numbers generate NaNs
a[2] = pd.to_numeric(a[2], errors='coerce')
a = a.sort_values([0,1,2], na_position='first')
print (a)
0 1 2
25Mg BLK 25 Mg NaN
25Mg 1 25 Mg 1.0
25Mg 2 25 Mg 2.0
25Mg 3 25 Mg 3.0
25Mg 4 25 Mg 4.0
25Mg 5 25 Mg 5.0
44Ca BLK 44 Ca NaN
44Ca 1 44 Ca 1.0
44Ca 2 44 Ca 2.0
44Ca 3 44 Ca 3.0
44Ca 4 44 Ca 4.0
44Ca 5 44 Ca 5.0
137Ba BLK 137 Ba NaN
137Ba 1 137 Ba 1.0
137Ba 2 137 Ba 2.0
137Ba 3 137 Ba 3.0
137Ba 4 137 Ba 4.0
137Ba 5 137 Ba 5.0

df = df.reindex_axis(c[:2].tolist() + a.index.tolist(), axis=1)
print (df)

关于 python Pandas : Sorting Columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47017709/

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