ValueError: invalid literal for int() with base 10: 'Pending '

ValueError: invalid literal for int() with base 10: 'Pending '

我正在尝试根据 dataframerows 更新现有的 xlsm 文件,方法是使用 [=18] 的代码通知我要在 excl 文件中更新的列=] df

frm_mwfy_to_te_col = pd.read_excel(r'' + mydir + 'Governance_Tracker - Copy - Copy.xlsm',
                                   usecols=['Pending  ', 'Pending Status'], header=1, axis=1)

这是我的代码中有错误的部分

for index, row in filtered_data_cond1['SiteCode'].items():
    for col, _ in frm_mwfy_to_te_col.items(): ws.cell(row=index + 3,
                                                      column=int(col)).value = 'Value1', 'Value2'

因为 filtered_data_cond1['SiteCode'] 是我要更新的行

filtered_data_cond1 = all_data.loc[all_data['SiteCode'].str.contains('|'.join(frm_mwfy_to_te.Subject))]

这是我的 all_data

all_data = pd.read_excel(r'' + mydir + 'Governance_Tracker - Copy - Copy.xlsm'
                         , header=1).drop(['#'], axis=1)

我发现了这个错误

Traceback (most recent call last):
  File "C:/Users/DELL/PycharmProjects/MyALLRefProf/MyExp.py", line 54, in <module>
    column=int(col).isnull()).value = 'Value1', 'Value2'  # example
ValueError: invalid literal for int() with base 10: 'Pending

'

错误是您的 frm_mwfy_to_te_col 数据框中的列(据我所知)称为 'Pending ''Pending Status'。当您在该行代码中尝试 int(col) 时,您试图将字符串 'Pending ' 转换为 int,这是无法完成的。

可能尝试将列重命名为整数。或者,更好的是,重新设计您的逻辑以允许列名称以更 Pythonic 的方式成为字符串。

编辑:

尝试将您的问题代码部分更改为:

for index, row in filtered_data_cond1['SiteCode'].items():
    for col_num in range(len(frm_mwfy_to_te_col.columns)): 
        ws.cell(row=index + 3, column=col_num + 1).value = 'Value1', 'Value2'