我已成功将Python连接到Microsoft Access数据库。当我尝试按数字升序对数据框中的列标签进行排序时,会出现问题。列名还包含字符。
我研究了几个排序功能,但是似乎没有一个功能可以解决此问题。
我的数据框如下;
C1 C10 C11 C12 C13 C14 ... C2 C20 C21 ... C3 ...
我希望如何对列进行排序;
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 ...
我的数据框还包含其他成分,例如苯,甲苯等,因此我希望列表也按字母顺序排列。
此外,有没有一种将其排序为;
... C4 C5 iC5 nC5 C6 iC6 nC6.
上述问题最重要,但是如果有人知道是否可以/如何做到这一点,请指教!
预先,谢谢您的帮助!
答案 0 :(得分:1)
我认为这可能是您正在寻找的答案:
data.reindex_axis(sorted(data.columns, key=lambda x: float(x[1:])), axis=1)
您可以随意修改x [1:]中的值,以在字符串中包括或排除更多字符。
答案 1 :(得分:0)
对于第一种情况,您可以执行以下操作。
df = df[list(sorted(df.columns.tolist()))]
在第二种情况下,也许可以反转字符串。
rev = lambda cols: list(map(lambda x: "".join(list(reversed(x))), cols))
cols = df.columns.tolist()
df = df[rev(list(sorted(rev(df.columns.tolist()))))]