bg_d = pd.read_excel(f, sheet_name=None, index_col=None, usecols="C:N", skiprows=23, nrows=8)
identifier = pd.read_excel(f, sheet_name=None, index_col=None, header=None, usecols="B", skiprows=13, nrows=1)
这将产生两个数据帧字典(excel中每个工作表一个数据帧),如下所示:
bg_d: {
Sheet1: 1 2 3 4 5 6 7 8 9 10 11 12,
Sheet2: 1 2 3 4 5 6 7 8 9 10 11 12,
Sheet3: 1 2 3 4 5 6 7 8 9 10 11 12 }
# note - each column (1, 2,3 etc.) has my experimental numbers
identifier: {
Sheet1: Water Sample,
Sheet2: Glycerin,
Sheet3: Serum }
我希望每个表单的最终数据帧看起来像这样:
Water Sample 1 2 3 4 5 6 7 8 9 10 11 12
Glycerin 1 2 3 4 5 6 7 8 9 10 11 12
Serum 1 2 3 4 5 6 7 8 9 10 11 12
我试过了:
bg_sheets = []
for sheet, name in bg_d.items():
for s, n in identifier.items():
val = n.values[0][0]
sheet["Plate"] = val
bg_sheets.append(sheet)
但是我得到一个字符串错误:
Exception has occurred: TypeError
'str' object does not support item assignment
错误是由bg_d.items()
返回键和值引起的,因此sheet
是字符串,而不是数据帧。你只需要一个循环。代码将是这样的:
bg_sheets = []
for name,sheet in bg_d.items():
n = identifier.get(name)
val = n.values[0][0]
sheet["Plate"] = val
bg_sheets.append(sheet)