【问题标题】:unable to change from object type to float64 in pandas无法在熊猫中从对象类型更改为 float64
【发布时间】:2019-12-21 19:15:38
【问题描述】:

我期待对 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'])

【问题讨论】:

  • 应用df = df.apply(np.float64)后打印df.dtypes的结果是什么?

标签: pandas


【解决方案1】:
pd.to_numeric(df, errors='coerce')

需要像这样分配:

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

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

【讨论】:

    【解决方案2】:

    您的代码实际上对我来说很好(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
    

    【讨论】:

    • @ge00rge 是的,我才意识到你提到在我发布后复制 df 太复杂了。 apply 函数有帮助吗?
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 2014-08-25
    • 2021-09-14
    • 2013-03-31
    相关资源
    最近更新 更多