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