Python DataFrames列根据列表重新排列-DataFrames具有不同的列

Python DataFrames列根据列表重新排列-DataFrames具有不同的列,python,pandas,dataframe,columnsorting,Python,Pandas,Dataframe,Columnsorting,我的问题摘要: 我有许多数据帧,都有相同的列池(7列,例如COLUMN1:COLUMN7),但有时会缺少一列或多列(即,一个数据帧可能有COLUMN1:COLUMN3+COLUMN6:COLUMN7,因此缺少第4列和第5列) 每个数据帧每次都有按不同顺序排列的列(即,df1有其顺序,df2有另一个顺序,df3又有另一个顺序等等…) 我想在每个数据帧中根据 用作基准的列(在本例中为列列表 从1到7) 期望的结果是所有数据帧都具有相同的属性 如果列缺少顺序,则基于此列表的列顺序 应保留(即,

我的问题摘要:

  • 我有许多数据帧,都有相同的列池(7列,例如COLUMN1:COLUMN7),但有时会缺少一列或多列(即,一个数据帧可能有COLUMN1:COLUMN3+COLUMN6:COLUMN7,因此缺少第4列和第5列)

  • 每个数据帧每次都有按不同顺序排列的列(即,df1有其顺序,df2有另一个顺序,df3又有另一个顺序等等…)

  • 我想在每个数据帧中根据 用作基准的列(在本例中为列列表 从1到7)

  • 期望的结果是所有数据帧都具有相同的属性 如果列缺少顺序,则基于此列表的列顺序 应保留(即,如果缺少第4列和第5列,则顺序为 列应该是:COL1、COL2、COL3、COL6、COL7)

更详细的说明:

我的代码中有几个数据帧是通过清理一些数据集生成的。这些数据帧中的每一个都有不同的列数和顺序,但列仅限于此列表:
“id”、“title”、“type”、“category”、“secondary category”、“date”、“description”
。因此,此列表中的列最多可以是7列。例如:

DataFrame1
“id”、“标题”、“日期”、“类别”、“类型”、“说明”、“次要类别”

DataFrame2
“id”、“说明”、“标题”、“类型”、“类别”、“日期”

DataFrame3
“id”、“类别”、“说明”、“标题”

期望输出:

我想根据初始列表
“id”、“title”、“type”、“category”、“secondary category”、“date”、“description”
,对列进行排序,即使列数不同。 根据上述示例,数据帧应为:

DataFrame1
“id”、“title”、“type”、“category”、“secondary category”、“date”、“description”

DataFrame2
“id”、“标题”、“类型”、“类别”、“日期”、“说明”

DataFrame3
“id”、“标题”、“类别”、“说明”


是否有一种方法(例如循环)可以这样排列列?

您可以使用列表理解来排序列的顺序,并使用
重新索引来设置正确的顺序:

desired_order = ['id', 'title', 'type', 'category', 'secondary category', 'date', 'description']

df = df.reindex([i for i in desired_order if i in df.columns], axis=1)

太棒了,这成功了,谢谢!