astype 是不是编辑原始数据框?

Posted

技术标签:

【中文标题】astype 是不是编辑原始数据框?【英文标题】:Does astype edit original dataframe?astype 是否编辑原始数据框? 【发布时间】:2021-12-23 11:04:44 【问题描述】:

我有一个简单的数据框 df:

col1 | col2
 7   |  8
 12  |  14

当我通过编写df.dtypes检查df的数据类型时,int64是两列的数据类型。

现在我通过键入来更改 col1 的数据类型

df.astype('col1': 'float64').dtypes

返回

col1    float64
col2      int64
dtype: object

好的,到目前为止一切都很好。所以现在当我仔细检查数据类型是否改变了 df...

df.dtypes

输出是

col1    int64
col2    int64
dtype: object

我认为 astype 会永久更改我原来的 df 的数据类型。所以我在这里很困惑。为什么 df 的数据类型没有变化?

【问题讨论】:

有一个copy 参数来确定这一点 - 请参阅:pandas.pydata.org/pandas-docs/stable/reference/api/… 嗯.. 让我们检查一下文档。 pandas.pydata.org/pandas-docs/stable/reference/api/…。不,它默认返回一个副本 【参考方案1】:

根据documentation astype 返回一个副本,所以你可以这样做:

df = df.astype('col1': 'float64')

或者,您也可以这样做:

df.col1 = df.col1.astype('float64')

【讨论】:

复制参数仍然返回一个新的帧而不修改原来的。 @cs95 谢谢。固定。【参考方案2】:

这里的问题是操作不起作用inplace 这就是为什么参数copy 是函数的一部分的原因。

此外,如果您希望更改是永久性的,您需要重新定义您的数据框。

df = df.astype('col1': 'float64')

这样当您检查df.dtypes 时,col1 将是浮动的。

【讨论】:

以上是关于astype 是不是编辑原始数据框?的主要内容,如果未能解决你的问题,请参考以下文章

astype 熊猫的错误​​?

如何在pandas数据帧中反转.astype(str)?

如何知道 astype('category').cat.codes 分配的标签?

python中astype(np.float)的用法

python中astype(np.float)的用法

C++ 中是不是有与 python 中的 astype() 函数等效的函数?