合并两个DataFrame后如何重新排序列?
解决DataFrame合并后列重新排序的问题
问题原因
你当前使用的sort_values()是用来对行数据排序的,无法调整列的显示顺序,所以不管怎么设置参数都达不到你想要的列排列效果。要调整列的顺序,需要直接指定目标列列表来重新索引DataFrame。
解决方案
根据你的目标输出,先定义好列的顺序,再用这个列表重新设置DataFrame的列:
# 定义目标列顺序(可根据需求调整) target_columns = [ 'home', 'away', 'scorehome', 'scoreaway', 'htresult', 'shresult', 'result', 'best_bets', 'oddtwo', 'oddthree', 'sum_stats', 'over05', 'over15', 'over25', 'over35', 'over45', 'goal', 'esito', 'tournament', 'uniquefield' ] # 重新设置df3的列顺序 df3 = df3[target_columns]
完整修改后的代码
将列顺序调整逻辑加入原有代码,完整代码如下:
df = df[['home','away','scorehome','scoreaway','result','best_bets','oddtwo','oddthree', 'sum_stats', 'over05', 'over15', 'over25', 'over35', 'over45', 'goal', 'esito', 'tournament', 'uniquefield']] df2 = df2[['home2','away2','htresult','shresult','result2','tournament2', 'uniquefield2']] df3 = df.merge(df2, left_on='uniquefield', right_on='uniquefield2', how='left').drop(['uniquefield2', 'tournament2', 'home2', 'away2', 'result2'], axis=1) # 新增:调整列顺序 target_columns = [ 'home', 'away', 'scorehome', 'scoreaway', 'htresult', 'shresult', 'result', 'best_bets', 'oddtwo', 'oddthree', 'sum_stats', 'over05', 'over15', 'over25', 'over35', 'over45', 'goal', 'esito', 'tournament', 'uniquefield' ] df3 = df3[target_columns] # 导出到Excel file_name = 'BexDataFull.xlsx' df3.to_excel(file_name) print('DataFrame is written to Excel File successfully.')
执行后导出的Excel列顺序就会和你的目标一致。
内容的提问来源于stack exchange,提问作者Franky77
相关产品推荐
相关产品推荐

