【发布时间】:2017-08-08 20:07:38
【问题描述】:
如果我用“inplace=True”(在the documentation 之后)重置我的 pandas DataFrame 的索引,它会返回一个类“NoneType”。如果我用“inplace=False”重置索引,它会返回带有新索引的 DataFrame。为什么?
print(type(testDataframe))
print(testDataframe.head())
返回:
<class 'pandas.core.frame.DataFrame'>
ALandbouwBosbouwEnVisserij AantalInkomensontvangers AantalInwoners \
0 73780.0 None 16979120
1 290.0 None 25243
2 20.0 None 3555
Set_index 返回一个新索引:
testDataframe = testDataframe.set_index(['Codering'])
print(type(testDataframe))
print(testDataframe.head())
返回
<class 'pandas.core.frame.DataFrame'>
ALandbouwBosbouwEnVisserij AantalInkomensontvangers \
Codering
NL00 73780.0 None
GM1680 290.0 None
WK168000 20.0 None
BU16800000 15.0 None
但 set_index 与 "inplace=True" 相同:
testDataframe = testDataframe.set_index(['Codering'], inplace=True)
print(type(testDataframe))
print(testDataframe.head())
返回
<class 'NoneType'>
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-50-0d6304ebaae1> in <module>()
版本信息:
python: 3.4.4.final.0
python-bits: 64
pandas: 0.18.1
numpy: 1.11.1
IPython: 5.2.2
【问题讨论】:
-
既然是inplace所以对象被修改了,为什么要返回新修改的对象呢?如果你通过了
inplace=False,那么它返回新的修改对象,你检查docs了吗?很清楚:inplace : boolean, default False. Modify the DataFrame in place (do not create a new object) -
为什么要返回一些东西?它进行 inplace 的修改,这意味着当前数据帧已更新。
-
返回对象本身很有趣,因此您可以执行
df = df.<do something not inplace>().reset_index(inplace=True)之类的操作。
标签: python python-3.x pandas dataframe