【发布时间】:2018-04-11 13:52:04
【问题描述】:
我正在尝试对 .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'
所以我已经想通了,我必须将一个函数传递给 sorted 函数来指定我希望它如何排序,但我想不出一个函数可以做到这一点。
非常感谢任何输入!
【问题讨论】:
-
你能解释一下你排序背后的逻辑吗?为什么
137Ba BLK出现在137Ba 1之前?除非你指定明确的排序逻辑,否则我们(或你)很难写出好的排序函数。 -
该文件是测量不同同位素的设备的输出。这里 137Ba 是特定同位素。 BLK 代表空白值或背景值,1,2,3,... 是该同位素的一系列测量值。