我有两个格式相似的数据框。两者都有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 | ..........................................................
答案 0 :(得分:0)
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()
,您将获得前一个数据框的视图,而不是本身的数据框。