ValueError:以10为底的int()的无效文字:'Pending'

时间:2019-08-28 10:58:11

标签: python pandas openpyxl valueerror

我试图通过使用xlsm的代码通知我要在excl文件中更新的列,从而根据dataframerows更新现有的pandas文件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

'

1 个答案:

答案 0 :(得分:1)

错误是frm_mwfy_to_te_col数据框中的列(据我所知)为'Pending ''Pending Status'。在该行代码中尝试int(col)时,您正在尝试将字符串'Pending '强制转换为int

可能尝试将列重命名为整数。或者,甚至更好的是,重新整理您的逻辑以使列名以更Python化的方式成为字符串。

编辑:

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

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'