添加两个格式相似的数据帧时保持列顺序

2024-10-03 06:18:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个格式相似的数据帧。两者都有3个索引/标题。大多数头都是相同的,但df2有几个附加头。当我把它们加起来时,标题的顺序就混淆了。我想维持df1的订单。有什么想法吗

Global = pd.read_excel('Mickey Mouse_Clean2.xlsx',header=[0,1,2,3],index_col=[0,1],sheet_name = 'Global')
Oslav = pd.read_excel('Mickey Mouse_Clean2.xlsx',header=[0,1,2,3],index_col=[0,1],sheet_name = 'Country XYZ')

Oslav = Oslav.replace(to_replace=1,value=10)
Oslav = Oslav.replace(to_replace=-1,value=-2)

df = Global.add(Oslav,fill_value=0)

df格式示例

                 HeaderA      |        Header2     |        Header3      |
           xxx1|xxx2|xxx3|xxx4||xxx1|xxx2|xxx3|xxx4||xxx1|xxx2|xxx3|xxx4 |
ColX|ColY |ColA|ColB|ColC|ColD||ColD|ColE|ColF|ColG||ColH|ColI|ColJ|ColDK|
1   | ds  | 1  |    |+1  |-1  | .......................................
2   | dh  |  ..........................................................
3   | ge  |  ..........................................................
4   | ew  |  ..........................................................
5   | er  |  ..........................................................

Tags: 标题readvalue格式excelglobalreplacepd
1条回答
网友
1楼 · 发布于 2024-10-03 06:18:29
df = df[Global.columns+list(set(Oslav.columns)-set(Global.columns))].copy()

df = df[Global.columns+[col for col in Oslav.columns if not col in Global.columns]].copy()

(如果您关心的话,第二个选项也应该保留Oslav列的顺序。)

df = df.reindex(columns=Global.columns+list(set(Oslav.columns)-set(Global.columns)))

如果不想保留在Oslav中但不在Global中的列,可以这样做

df = df[Global.columns].copy()

请注意,如果没有.copy(),您将获得前一个数据帧的视图,而不是数据帧本身的视图

相关问题 更多 >