如何使用Inplace = True与pandas函数来操作我的dataframe



我在尝试使用inplace = True时遇到了问题,这样我就不必不断地创建一个新变量来保存对Dataframes的更改。它对和函数有效吗?我还可以在哪里使用它?我应该在DataFrame中使用一个新变量存储更改而不使用inplace吗?

sp500["Close"].str.replace("$", " ").astype(float)
sp500["Close"].str.replace({"$", " "}, inplace = True).astype({float}, inplace =True)

这些工作没有问题

sp500.dropna(inplace = True)
sp500.sort_index(ascending = True, inplace =True)

数据帧样本

Date
2012-10-01    1444.49
2012-10-02    1445.75
2012-10-03    1450.99
2012-10-04    1461.40
2012-10-05    1460.93
...   
2019-04-16    2907.06
2019-04-17    2900.45
2019-04-18    2905.03
2019-04-22    2907.97
2019-04-23    2933.68

在这种情况下不需要使用任何新的变量:

sp500.Close = sp500.Close.str.replace("$", " ").astype(float)

你可以访问列作为属性,只要你的列名是"合法的",";使其更简洁、更清晰。如果您正在对数据视图执行操作,请确保使用.loc.iloc进行替换;否则,你会得到关于返回副本和返回视图的警告。

一般来说,最好避免使用inplace=True,因为它使代码更难遵循,并可能导致意想不到的结果和奇怪的行为。它还消除了有效使用方法链的能力。请看下面的例子:
df = df.some_method(*args).another_method(*args)
# vs
df.some_method(*args, inplace=True)
df.another_method(*args, inplace=True)

最新更新