Python Pandas TypeError:只能将str(而不是“int”连接到str

Python Pandas TypeError:只能将str(而不是“int”连接到str,python,html,pandas,dataframe,typeerror,Python,Html,Pandas,Dataframe,Typeerror,我有一个问题,两个几乎相同的html文件在代码上创建了不同的行为。如果我在第一张图片中选择HTML文件,pandasGUI将很好地加载数据帧。但是,如果我选择第二个HTML文件,它会抛出一个typeerror,如标题中所述。我已经断断续续地尝试了三个星期,我完全迷失了方向。有人能帮忙吗?代码如下 import pandas as pd from scipy.interpolate import interp1d from pandasgui import show pd.set_option(

我有一个问题,两个几乎相同的html文件在代码上创建了不同的行为。如果我在第一张图片中选择HTML文件,pandasGUI将很好地加载数据帧。但是,如果我选择第二个HTML文件,它会抛出一个typeerror,如标题中所述。我已经断断续续地尝试了三个星期,我完全迷失了方向。有人能帮忙吗?代码如下

import pandas as pd
from scipy.interpolate import interp1d
from pandasgui import show

pd.set_option('display.max_columns', 100)
pd.set_option('precision', 3)
file = ''

def choose_file():
    global file
    i = input("Please choose an option below: \n"
              "1: Own Team \n"
              "2: Shortlist \n")
    if (i == '1'):
        file = './own_team.html'
    elif (i == '2'):
        file = './shortlist.html'
    return file

file = choose_file()
attribute_view = pd.read_html(file)

map = interp1d([1, 7000], [1, 100])

df = attribute_view[0]

if(file == './shortlist.html'):
    for column in ['Inf', 'Name', 'Age', 'Best Pos', 'Personality', 'Acc', 'Wor', 'Vis', 'Thr', 'Tec', 'Tea', 'Tck', 'Str', 'Sta', 'TRO', 'Ref', 'Pun', 'Pos', 'Pen', 'Pas', 'Pac', '1v1', 'OtB', 'Nat', 'Mar', 'L Th', 'Lon', 'Ldr', 'Kic', 'Jum', 'Hea', 'Han', 'Fre', 'Fla', 'Fir', 'Fin', 'Ecc', 'Dri', 'Det', 'Dec', 'Cro', 'Cor', 'Cnt', 'Cmp', 'Com', 'Cmd', 'Bra', 'Bal', 'Ant', 'Agi', 'Agg', 'Aer']:
        df[column] = df[column].replace('-', 0)
    print(df)

df['Team_dna'] = (df['Agg'] + df['Ant'] + df['Det'] + df['Tea'] + df['Wor'] + df['Acc'] + df['Sta'])

# Sweeper Keeper - Attack
df['sk_at'] = map((df['Aer'] + df['Com'] + df['Fir'] + df['Han'] + df['Pas'] + df['Ref'] + df['TRO'] + df['Thr'] + df['Cmp'] + df['Dec'] + df['Vis'] + df['Acc']) * 40)

编辑: 完全回溯:

Please choose an option below: 
1: Own Team 
2: Shortlist 
2
Traceback (most recent call last):
  File "C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\ops\array_ops.py", line 149, in na_arithmetic_op
    result = expressions.evaluate(op, str_rep, left, right)
  File "C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\computation\expressions.py", line 208, in evaluate
    return _evaluate(op, op_str, a, b)
  File "C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\computation\expressions.py", line 70, in _evaluate_standard
    return op(a, b)
TypeError: can only concatenate str (not "int") to str

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:/Github/FM20-Analysis/FM.py", line 36, in <module>
    df['sk_at'] = map((df['Aer'] + df['Com'] + df['Fir'] + df['Han'] + df['Pas'] + df['Ref'] + df['TRO'] + df['Thr'] + df['Cmp'] + df['Dec'] + df['Vis'] + df['Acc']) * 40)
  File "C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\ops\common.py", line 64, in new_method
    return method(self, other)
  File "C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\ops\__init__.py", line 503, in wrapper
    result = arithmetic_op(lvalues, rvalues, op, str_rep)
  File "C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\ops\array_ops.py", line 197, in arithmetic_op
    res_values = na_arithmetic_op(lvalues, rvalues, op, str_rep)
  File "C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\ops\array_ops.py", line 151, in na_arithmetic_op
    result = masked_arith_op(left, right, op)
  File "C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\ops\array_ops.py", line 94, in masked_arith_op
    result[mask] = op(xrav[mask], yrav[mask])
TypeError: can only concatenate str (not "int") to str

Process finished with exit code 1
请选择以下选项:
1:自己的球队
2:入围名单
2.
回溯(最近一次呼叫最后一次):
文件“C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site packages\pandas\core\ops\array\u ops.py”,第149行,na\u算术\u op
结果=表达式。求值(op,str_rep,左,右)
文件“C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site packages\pandas\core\computation\expressions.py”,第208行,在evaluate中
返回-评估(op,op-str,a,b)
文件“C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site packages\pandas\core\computation\expressions.py”,第70行,标准
返回op(a、b)
TypeError:只能将str(而不是“int”)连接到str
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“D:/Github/FM20 Analysis/FM.py”,第36行,在
测向['sk_at']=地图((测向['Aer']+测向['Com']+测向['Fir']+测向['Han']+测向['Pas']+测向['Ref']+测向['Thr']+测向['Cmp']+测向['Dec']+测向['Vis']+测向['Acc'])*40)
文件“C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site packages\pandas\core\ops\common.py”,第64行,采用新方法
返回方法(自身、其他)
文件“C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site packages\pandas\core\ops\\uuuuuuu init\uuuuuu.py”,第503行,在包装器中
结果=算术运算(左值、右值、运算、str_rep)
文件“C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site packages\pandas\core\ops\array\u ops.py”,第197行,算术\u op
res_values=na_算术运算(左值、右值、运算、str_rep)
文件“C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site packages\pandas\core\ops\array\u ops.py”,第151行,na\u算术\u op
结果=屏蔽的算术运算(左、右、运算)
文件“C:\Users\Pottemuld\AppData\Local\Programs\Python\Python37-32\lib\site packages\pandas\core\ops\array\u ops.py”,第94行,掩蔽格式
结果[mask]=op(xrav[mask],yrav[mask])
TypeError:只能将str(而不是“int”)连接到str
进程已完成,退出代码为1

第二个图像在某些列中有值“-”。这会将整个列强制转换为字符串,您将无法运行算术运算。这应该够了

df = df.replace('-', 0)

谢谢你,等我到家后我会试试,但这确实有意义。我仍然会使用它,而不是循环遍历代码行抛出错误的所有列?完整的回溯将更好地帮助确定问题所在。这是触发错误的行:df['sk_at']=map((df['Aer']+df['Com']+df['Fir']+df['Han']+df['Pas']+df['Ref']+df['Thr']+df['Cmp']+df['Dec']+df['Vis']+df['Acc']]]*40)可以在今天晚些时候提供完整的跟踪。这似乎不可复制,但你说你已经花了好几天的时间。我会用df['sk_at']这一行。。。然后在map((…)*40)中一次只添加其中一列,然后查看哪一列将其打断。然后试着弄清楚为什么你的程序认为这个列是一个字符串。所以从df['sk_at']=map((df['Aer']]]*40)开始,看看你是否得到和错误了。然后df['sk_at']=map((df['Aer']+df['Com'])*40)。看看你是否得到了错误。等等。