【问题标题】:TypeError: int() argument must be a string a bytes-like object or a number not 'DataFrame'TypeError: int() 参数必须是字符串、类似字节的对象或数字不是“DataFrame”
【发布时间】:2021-08-20 15:34:21
【问题描述】:

我无法将函数作为参数传递给另一个函数。这是我的代码:

            sNummer = sv[9:11]
            pd.to_numeric(sNummer)
            print(type(sNummer))
            sNummer= df.replace(np.nan,0)
            sNummer= sNummer.replace(r'^\s*$', np.nan, regex=True)
            
            if int(sNummer) >= 0 and int(sNummer) <= 49:
                

                if gender.lower().strip() not in male_gender_options:
                    
                    #df= df.replace(r'^\s*$', np.nan, regex=True)
                    
                    df.at[index, 'sv_plausibility'] = (df.at[index,'sv_plausibility'].str.split()).apply(lambda x: float(sNummer))

                    if df.at[index, 'sv_plausibility'] == '':
                        df.at[index, 'sv_plausibility'] += 'Seriennummer müsste männlich sein aber passt nicht zu Geschlechtsspalte'
                    else:
                        df.at[index, 'sv_plausibility'] += ', Seriennummer müsste männlich sein aber passt nicht zu Geschlechtsspalte'

                else:
                    pass

            elif int(sNummer) >= 50 and int(sNummer) <= 99:

                if gender.lower().strip() not in female_gender_options:

                    if df.at[index, 'sv_plausibility'] == '':
                        df.at[index, 'sv_plausibility'] += 'Seriennummer müsste weiblich sein aber passt nicht zu Geschlechtsspalte'
                    else:
                        df.at[index, 'sv_plausibility'] += ', Seriennummer müsste weiblich sein aber passt nicht zu Geschlechtsspalte'

                else:
                    pass

            else:
                if df.at[index, 'sv_plausibility'] == '':
                    df.at[index, 'sv_plausibility'] += 'Seriennummer ungültig'
                else:
                    df.at[index, 'sv_plausibility'] += ', Seriennummer ungültig'

我不明白,因为当我打印“sNummer”的类型时,它是一个字符串,但不知何故他说它是数据帧。

有什么想法吗?

错误:

这是完整的回溯:

第 2 部分:PLAUSIBILITÄTSCHECK SV-Nr. hr 1985-07-06 00:00:00 1985-07-06 00:00:00 1 3 1 Tkinter 回调 Traceback 中的异常(最后一次调用):文件“C:\ProgramData \Anaconda3\lib\tkinter_init_.py”,第 1883 行,在调用中返回 self.func(*args) 文件“C:\Users\DE110117.spyder-py3\temp.py”,第 1123 行,运行 pwcDataCleaner()。 sv_nr_plausibility(df=excel_file, sv_column=self.svColumnName, gender_column=self.genderColumnName, File "C:\Users\DE110117.spyder-py3\temp.py", line 467, in sv_nr_plausibility if int(sNummer) >= 0 and int(sNummer)

sv: sv_column(索引)

【问题讨论】:

  • 请提供完整的回溯,sv 是什么,print(type(sNummer)) 返回什么。另外,当您已经将该变量分配给sv[9:11]时,为什么还要将sNummer重新分配给df.replace(np.nan,0)
  • df.replace(np.nan,0) 我想要一个 df.replace 来精确地在此列中制作带有 N/A 的空案例
  • 是的,我用 sNummer 变量替换它
  • 你想要这个吗:df = df.replace(...)?

标签: python pandas tkinter


【解决方案1】:
            sNummer = sv[9:11]
            sNumber=pd.to_numeric(sNummer,errors='coerce')
            print(type(sNummer))
            
            if int(sNummer) >= 0 and int(sNummer) <= 49:

这是我的新代码,但我有这个错误:

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

我认为这是因为某些情况是空的,并且带有“错误强制”的行不起作用

【讨论】:

    【解决方案2】:
    sNummer = sv[9:11]
    pd.to_numeric(sNummer)
    

    当你创建这个变量时,为了 pd.to_numeric 工作,Pandas 将 sNummer 转换为 Dataframe,所以类型是 dataframe。

    可能创建的数据框只有一个值,即您想要的数字,您可以打印整个 sNummer 以查看它具有的值。

    我认为您可以将 sNummer[0] 传递给您的函数,而不是传递 sNummer,并获得它需要的 Int

    【讨论】:

    • 是的,我知道,但我想直接将数据帧转换为浮点数或整数,但我们可以看到它不起作用
    • 我希望 mpty 大小写为“N/A”并且不为空的大小写转换为浮点数或字符串
    • 这条线不起作用 sNummer 之后仍然是一个字符串
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2021-01-14
    • 2018-03-17
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多