假设有两个数据帧-DF1
和DF2
。
DF1
来自使用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”的不受支持的操作数类型
我做错了什么?
答案 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)
然后,减法将起作用。