【发布时间】:2022-01-01 04:21:21
【问题描述】:
我想合并 Excel 文件第一列中的连续值并将其导出到另一个。我的问题与this one 非常相似,但我无法得到 正确的输出文件。
输入 Excel 文件 (Modules.xlsx)
data = pd.read_excel(io="Modules.xlsx")
df = pd.DataFrame(data=data).set_index([data.columns[0]])
print(df)
with pd.ExcelWriter(path="excel_file.xlsx", engine="xlsxwriter") as writer:
df.to_excel(excel_writer=writer, sheet_name="Inventories")
old_ws = writer.sheets.get("Inventories")
for col, val in enumerate(df.reset_index().columns):
old_ws.write(0, col, val)
Module Name Serial Number PID Description
MGMT IP Address (Hostname)
sandbox-iosxe-latest-1.cisco.com (csr1000v-1) Chassis 9ESGOBARV9D CSR1000V Cisco CSR1000V Chassis
sandbox-iosxe-latest-1.cisco.com (csr1000v-1) module R0 JAB1303001C CSR1000V Cisco CSR1000V Route Processor
sandbox-iosxe-latest-1.cisco.com (csr1000v-1) module F0 NaN CSR1000V Cisco CSR1000V Embedded Services Processor
sandbox-iosxe-recomm-1.cisco.com (csr1000v-recomm) Chassis 926V75BDNRJ CSR1000V Cisco CSR1000V Chassis
sandbox-iosxe-recomm-1.cisco.com (csr1000v-recomm) module R0 JAB1303001C CSR1000V Cisco CSR1000V Route Processor
sandbox-iosxe-recomm-1.cisco.com (csr1000v-recomm) module F0 NaN CSR1000V Cisco CSR1000V Embedded Services Processor
输出excel_file.xlsx 与Modules.xlsx 完全相同。为了让excel_file.xlsx 看起来像下图,我缺少什么?
Pandas v1.3.4 & xlsxwriter v3.0.2
【问题讨论】:
-
你必须使用多级索引(例如
set_index([d.columns[:2]]),而不是像你那样的常规索引 -
@Stef 为什么它只适用于
set_index([data.columns[0], data.columns[0]])而不是set_index([data.columns[:2]])我得到ValueError: Length mismatch: Expected 6 rows, received array of length 2.d is incorrect and supposed to be data -
对不起,一定是
set_index(data.columns[:2].tolist())
标签: python excel pandas xlsxwriter