[英]How to merge columns from multiple sheets in one excel file by pandas
如何使用熊猫组合每张纸中的列?
我需要遍历一个 Excel 文件中的每个工作表,并分别合并每个工作表,如下图所示。
我在一个文件中有大约 1000 张纸,并且床单名称不一样。
如何进行迭代和合并?
pandas.read_excel
与sheet_name=None
一起使用似乎最容易。
None
以获取所有工作表。sheet_names
作为键的数据帧dict
。keys
和values
,以组合两列并写回文件。.fillna()
方法可用于任一列,如以下代码所示。import pandas as pd
# create dict of dataframes
df = pd.read_excel('test.xlsx', sheet_name=None)
# iterate through dict
for k, v in df.items():
with pd.ExcelWriter('combined.xlsx', mode='a', engine='openpyxl') as writer: # write sheets to a new file
combined = v.iloc[:, 0].fillna('xxx') + ' ' + v.iloc[:, 1].fillna('xxx') # combine the first and second column
combined.to_excel(writer, sheet_name=k, index=False, header=False)
df = pd.read_excel('test.xlsx', sheet_name=None)
for k, v in df.items():
with pd.ExcelWriter('combined.xlsx', mode='a', engine='openpyxl') as writer: # write sheets to a new file
v['comb'] = v.iloc[:, 0].fillna('xxx') + ' ' + v.iloc[:, 1].fillna('xxx') # combine the first and second column
v.to_excel(writer, sheet_name=k, index=False, header=False)
这在许多帖子中都有解释( Using Pandas to pd.read_excel() for multiple worksheets of the same workbook )
xls = pd.ExcelFile('path_to_file.xls')
df1 = pd.read_excel(xls, 'Sheet1')
df2 = pd.read_excel(xls, 'Sheet2')
要按列合并数据框,
df1.append(df2)
df1.append(df3)
...
上面的代码将生成一个保存在 df1 中的合并数据帧。
import pandas as pd
df1 = pd.read_excel(f_name.xls, 'Sheet1')
df2 = pd.read_excel(f_name.xls, 'Sheet2')
df3 = pd.read_excel(f_name.xls, 'Sheet3')
df = pd.merge(df1, (pd.merge(df2, df3, how='outer', left_index=True, right_index=True), how='outer', left_index=True, right_index=True)
更新:
import pandas as pd
writer = pd.ExcelFile('Downloads\wbook.xlsx')
writer.sheet_names
#prints names of the spreadsheets.
excelfile = pd.ExcelWriter('workb1.xlsx', engine='openpyxl')
for i in writer.sheet_names:
df = pd.read_excel(writer, sheet_name=i, header=None)
df[3] = df.iloc[:, 0] + ' ' + df.iloc[:, 1]
df.to_excel(excelfile, sheet_name=i, index=False)
excelfile.save()
为原始工作簿中的每个工作表创建一个包含 A 列和 B 列组合的新电子表格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.