无法将.xlsx文件与pandas合并

2024-09-29 18:48:24 发布

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

我使用的是Python2.7,我编写了一个脚本,该脚本应采用两个.xlsx文件的名称,使用pandas将它们转换为两个数据帧,然后将它们连接起来。 正在考虑的两个文件具有相同的行和不同的列。 基本上,我有两个Excel文件:

enter image description hereenter image description here

我想保留相同的行,只合并列。 代码如下:

import pandas as pd

file1 = 'file1.xlsx'
file2 = 'file2.xlsx'
sheet10 = pd.read_excel(file1, sheet_name = 0)
sheet20 = pd.read_excel(file2, sheet_name = 0)

conc1 = pd.concat([sheet10, sheet20], sort = False)
output = pd.ExcelWriter('output.xlsx')
conc1.to_excel(output, 'Sheet 1')
output.save()

不是按照我的预期去做(给出我在网上读到的例子),输出变成这样:

enter image description here

有人知道我可以改进我的剧本吗? 非常感谢你。你知道吗


Tags: 文件name脚本pandasreadoutputxlsxexcel
2条回答

这里的最佳答案实际上取决于数据的确切形状。根据您提供的示例,看起来数据在两个dataframe之间的索引是相同的,这两个dataframe具有您想要保留的不同列标题。如果是这种情况,这将是最好的解决方案:

import pandas as pd

file1 = 'file1.xlsx'
file2 = 'file2.xlsx'
sheet10 = pd.read_excel(file1, sheet_name = 0)
sheet20 = pd.read_excel(file2, sheet_name = 0)

conc1 = sheet10.merge(sheet20, how="left", left_index=True, right_index=True)
output = pd.ExcelWriter('output.xlsx')
conc1.to_excel(output, sheet_name='Sheet 1', ignore_index=True)
output.save()

因为两个初始数据帧中的行数是直接匹配的,所以使用左连接、右连接、外连接还是内连接并不重要。在这个例子中,我使用了左连接。你知道吗

但是,如果两个数据帧中的行没有完全对齐,那么选择的连接方法会对输出产生巨大影响。我建议您在进一步讨论之前,先看看merge/join/concatenate上的pandas文档。你知道吗

要使用pd.concat获得预期的输出,两个数据帧中的列名应该相同。这是怎么做的

# Create a 1:1 mapping of sheet10 and sheet20 columns
cols_mapping = dict(zip(sheet20.columns, sheet10.columns))

# Rename the columns in sheet20 to match with that of sheet10
sheet20_renamed = sheet20.rename(cols_mapping, axis=1)

concatenated = pd.concat([sheet10, sheet20_renamed])

相关问题 更多 >

    热门问题