我有以下数据框:
data = [{'Po_+0.00': 1, 'Po_+0.25': 1.5, 'Po_+0.50': 2,'Po_-0.25': 1.3, 'Po_-0.50': 1.6}]
df = pd.DataFrame(data, index =[1])
我尝试了各种方法,但从未设法获得正确的结果。
有什么主意吗?
谢谢。
答案 0 :(得分:1)
使用argsort
占列名称的数字部分:
df = df[df.columns[df.columns.str[3:].astype(float).argsort()]]
#Alternative
#df = df.iloc[:, df.columns.str[3:].astype(float).argsort()]
print(df)
Po_-0.50 Po_-0.25 Po_+0.00 Po_+0.25 Po_+0.50
1 1.6 1.3 1 1.5 2
答案 1 :(得分:1)
将sorted
与参数key
和lambda函数一起用于将下一个3
的值转换为浮点数:
df = df[sorted(df.columns, key=lambda x: float(x[3:]))]
print (df)
Po_-0.50 Po_-0.25 Po_+0.00 Po_+0.25 Po_+0.50
1 1.6 1.3 1 1.5 2