通过多个正则订购数据帧列



我想通过多个正则订购数据框。也就是说,例如,在此数据框中

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)

最新更新