Python 带有返回值的DataFrame就地修改

Python 带有返回值的DataFrame就地修改,python,pandas,dataframe,in-place,Python,Pandas,Dataframe,In Place,我正在阅读Wes McKinney的《python for data analysis》,看到了以下代码 # Always returns a reference to a DataFrame _ = data.rename(index={'Ohio':'Indiana'}, inplace=True) 是否有理由将就地更改设置为\u?我们使用\u表示我们不关心的值。这是惯例。inplace参数将改变data当前指向的对象,同时rename方法将返回对该对象的另一个引用。此语句是从rename

我正在阅读Wes McKinney的《python for data analysis》,看到了以下代码

# Always returns a reference to a DataFrame
_ = data.rename(index={'Ohio':'Indiana'}, inplace=True)

是否有理由将就地更改设置为
\u

我们使用
\u
表示我们不关心的值。这是惯例。
inplace
参数将改变
data
当前指向的对象,同时
rename
方法将返回对该对象的另一个引用。此语句是从
rename
中获取返回值并将其分配给
\uu
的语句,表示我们将丢弃它。这无关紧要,因为我们已经有了一个变量,即
data
,它将产生结果,因为
inplace=True

根据耶斯雷尔的评论
rename
with
inplace=True
返回
None
使其与分配给
完全无关


因此,您的问题的答案是,不。

\u
通常用于标记我们不关心/不想使用的变量

当你拉出一个元组,而不关心所有的值时,这通常更有意义

a, _ = (1, 2)  # pulls out a == 1
在这种情况下,对于单个值,没有理由这样做。您可以安全地清除此代码以:

data.rename(index={'Ohio':'Indiana'}, inplace=True)

我怀疑这是来自以下方面的重构:

data = data.rename(index={'Ohio':'Indiana'})

这使得注释“始终返回对数据帧的引用”有意义(当您使用inplace时,它返回的是None而不是DataFrame!)。

这很有趣,因为
inplace
return
None
。我怀疑这是由
data=data.rename(索引={'Ohio':'Indiana')的重构引起的
。我在198页的书中找到了它
如果您希望就地修改数据集,pass inplace=True:#始终返回对[151]中数据帧的引用:=data.rename(index={'ohoi':'INDIANA'},inplace=True)in[152]:data Out[152]当前位置1 2 3 4印第安纳0 1 2 3科罗拉多4 5 6 7纽约8 9 10 11
我怀疑这是一个重构的原因是,相对于这本书而言,inplace是一个新的关键词,尽管它已经过时了。