TypeError:-:比较两个数据帧的'str'和'float'的不支持的操作数类型

时间:2018-08-15 10:16:09

标签: python excel pandas csv dataframe

假设有两个数据帧-DF1DF2DF1来自使用pandas.read_csv(path/to/file, header=1, index_col=[0])的.txt逗号分隔文件,而DF2来自使用pandas.read_excel(path/to/file, header=0, index_col=[1])的.xlsx文件。来自文件1的'header=1'包含与文件2中的header=0相同的列名,并且index_col=[0]包含与index_col=[1]相同的对象名。
我的目标是为每个对象(原始)减去每列的值。我正在尝试执行以下操作:

diff = df1 - df2

diff = pd.DataFrame.sub(df1,df2)

但是它总是显示提到的错误:

  

TypeError:-:“ str”和“ float”的不受支持的操作数类型

我做错了什么?

1 个答案:

答案 0 :(得分:1)

很可能您的一个DataFrame包含字符串,而另一个包含数字。

例如,如果我写

df1 = pd.DataFrame([1,2,3])
df2 = pd.DataFrame(['3', '2', '6'])
df1 - df2

然后我得到

TypeError: unsupported operand type(s) for -: 'int' and 'str'

要解决此问题,我可以添加该行

df2 = df2.astype(int)

然后,减法将起作用。