无法从熊猫的对象类型更改为float64

时间:2019-08-15 10:10:27

标签: pandas

我希望对df中的列进行分组,而我不得不看一下这篇文章pandas groupby dropping columns,因为在我的情况下,当group_by()。mean()时,我也丢失了列,因此我尝试执行

df.groupby("A", as_index=False).mean()

和一个

df.groupby('A').mean().reset_index()

然后我检查了df中的列,发现其中3列是对象类型,

df.types

我遇到的问题是我无法将列类型从object更改为float64(顺便说一下,groupby之后消失的列

我试图更改列的方式是:

df['A']=df['A'].astype(float)

df['A']=df['A'].astype(np.float64)

df.convert_objects(convert_numeric=True)

pd.to_numeric(df, errors='coerce')

但也没有起作用

但是列仍然是对象类型。

用列的dtypes复制我的df很复杂,但是我将发布用于这种情况的df。

我的df:

df=pd.DataFrame(data=np.transpose([[1.014e-7,0,3,1.014e-7],[2,4,6,8],[1,1,1,1],[5,5,5,8]]),index=['x','y','w','z'],columns=['A','B','C','D'])

2 个答案:

答案 0 :(得分:1)

您的代码实际上对我来说很好用(Python版本3.6)。尝试检查您的Python版本:

import sys
print(sys.version)    # Python 3.6.2 

如果将所有列都转换为浮点数,请尝试使用:

df = df.apply(np.float64)
df.dtypes

您应该最终得到:

A    float64
B    float64
C    float64
D    float64

答案 1 :(得分:0)

pd.to_numeric(df, errors='coerce')

需要像这样分配:

df = pd.to_numeric(df, errors='coerce')

现在应将列中的所有字符串替换为“ NaN”,从而使df.groupby("A", as_index=False).mean()成为可能。