我在尝试使用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)