Python 大熊猫为什么要“给”;0.66-0.36“;当我尝试添加两列时?

Python 大熊猫为什么要“给”;0.66-0.36“;当我尝试添加两列时?,python,pandas,Python,Pandas,我试图用列名有形账面价值和每股收益做一个简单的求和: df['price_asset_EPS'] = (df["Tangible Book Value"]) + (df["Earnings Per Share"]) 然而,结果并没有评估这些数字,加号也丢失了,如下所示 0.66-0.36 1.440.0 我遗漏了什么?看起来两列都是字符串(不是浮点): 0.66-0.36 1.440.0 查看这些列上的“+”是如何进行字符串连接而不是加法的?它连接了“0.66”和“-0.36”,然后是

我试图用列名
有形账面价值
每股收益
做一个简单的求和:

df['price_asset_EPS'] = (df["Tangible Book Value"]) + (df["Earnings Per Share"])
然而,结果并没有评估这些数字,加号也丢失了,如下所示

0.66-0.36 
1.440.0

我遗漏了什么?

看起来两列都是字符串(不是浮点):

0.66-0.36 
1.440.0
查看这些列上的“+”是如何进行字符串连接而不是加法的?它连接了“0.66”和“-0.36”,然后是“1.44”和“0.0”


至于为什么这些列不是浮动的字符串,请查看
pandas.read\u csv
提供给它们的数据类型。这里有许多重复的问题,告诉您如何指定正确的数据类型来读取\u csv。

您的列不被视为数字,而是字符串。尝试运行
df.dtypes
。针对每一列,您将有它的类型。如果您没有看到
浮点
int
,这意味着这些列可能已作为字符串读入

import pandas as pd
dff = pd.DataFrame([[1,'a'], [2, 'b']])
dff.dtypes
0     int64
1    object
下面,我创建了一个数据框,其中的数字用引号括起来。查看
d类型

dff = pd.DataFrame([['1','a'], ['2', 'b']])
dff.dtypes
0    object
1    object
在这里您可以看到,由于引号的缘故,数字列没有标记为
int
/
float
。现在,如果我取第一列的和

dff.iloc[:,0].sum()
'12'
我得到的是
'12'
,与你的情况相同。要将这些列转换为数字,请查看


如果没有您的数据样本,很难判断-您能否
打印(df.head())
并将结果编辑到您的帖子中?因为这两列都是字符串而不是浮动的,可能是因为
pandas.read\u csv
将它们作为字符串读取;搜索如何传递正确的数据类型。请在您的帖子中向我们展示
print(df.head())
。谢谢大家的回复。数据是字符串,而不是int,因此加号连接值
dff.iloc[:,0] = pd.to_numeric(dff.iloc[:,0], errors='ignore')
dff.iloc[:,0].sum()
3