我正在尝试用列名Tangible Book Value
和Earnings Per Share
做一个简单的求和:
df['price_asset_EPS'] = (df["Tangible Book Value"]) + (df["Earnings Per Share"])
但是,结果不会计算数字,加号也会丢失,如下所示
0.66-0.36
1.440.0
在这两者之间我错过了什么?
发布于 2018-05-21 17:58:15
您的列不会被视为数字,而是字符串。尝试运行df.dtypes
。对于每一列,您将拥有它的类型。如果您没有看到float
或int
,这意味着这些列可能已经被作为字符串读入。
import pandas as pd
dff = pd.DataFrame([[1,'a'], [2, 'b']])
dff.dtypes
0 int64
1 object
下面我创建了一个在引号中包含数字的数据帧。看一看dtypes
。
dff = pd.DataFrame([['1','a'], ['2', 'b']])
dff.dtypes
0 object
1 object
在这里您可以看到,由于引号的缘故,numbers列没有被标记为int
/float
。现在,如果我取第一列的和
dff.iloc[:,0].sum()
'12'
我得到了'12'
,和你的情况是一样的。要将这些列转换为数字,请查看pd.to_numeric
dff.iloc[:,0] = pd.to_numeric(dff.iloc[:,0], errors='ignore')
dff.iloc[:,0].sum()
3
https://stackoverflow.com/questions/50445428
复制相似问题