我想通过多个正则订购数据框。也就是说,例如,在此数据框中
df = pd.DataFrame({'Col1': [20, 30],
'Col2': [50, 60],
'Pol2': [50, 60]})
在以C.
开始之前,请以p开头获取列。我发现您可以用一条正则过滤,例如
df.filter(regex = "P*")
,但我不能以更多的级别做到这一点。
更新:我想在一个指令中这样做,我已经能够使用正则列表并在另一个dataframe中加入列。
我相信您需要用concat
中的Regexes过滤的数据框架列表:
reg = ['^P','^C']
df1 = pd.concat([df.filter(regex = r) for r in reg], axis=1)
print (df1)
Pol2 Col1 Col2
0 50 20 50
1 60 30 60
您只能通过常规分配重新排序列。
将Colums导出到排序列表,并由它索引。
尝试:
import pandas as pd
df = pd.DataFrame({'Col1': [20, 30],
'Pol2': [50, 60],
'Col2': [50, 60],
})
df = df[sorted(df.columns.to_list(), key=lambda col: col.startswith("P"), reverse=True)]
print(df)