Pandas dataframe:set_index with inplace = True返回NoneType,为什么?

Wou*_*ter 5 python-3.x pandas

如果我使用"inplace = True"重置我的Pandas数据帧的索引(遵循文档),它将返回一个类'NoneType'.如果我使用"inplace = False"重置索引,则返回带有新索引的数据帧.为什么?

print(type(testDataframe))
print(testDataframe.head())
Run Code Online (Sandbox Code Playgroud)

收益:

<class 'pandas.core.frame.DataFrame'>
    ALandbouwBosbouwEnVisserij AantalInkomensontvangers  AantalInwoners  \
0                     73780.0                     None        16979120   
1                       290.0                     None           25243   
2                        20.0                     None            3555   
Run Code Online (Sandbox Code Playgroud)

Set_index返回一个新索引:

testDataframe = testDataframe.set_index(['Codering'])
    print(type(testDataframe))
    print(testDataframe.head())
Run Code Online (Sandbox Code Playgroud)

回报

<class 'pandas.core.frame.DataFrame'>
            ALandbouwBosbouwEnVisserij AantalInkomensontvangers  \
Codering                                                          
NL00                           73780.0                     None   
GM1680                           290.0                     None   
WK168000                          20.0                     None   
BU16800000                        15.0                     None   
Run Code Online (Sandbox Code Playgroud)

但是带有"inplace = True"的set_index相同:

testDataframe = testDataframe.set_index(['Codering'], inplace=True)
print(type(testDataframe))
print(testDataframe.head())
Run Code Online (Sandbox Code Playgroud)

回报

<class 'NoneType'>
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-50-0d6304ebaae1> in <module>()
Run Code Online (Sandbox Code Playgroud)

版本信息:

python: 3.4.4.final.0
python-bits: 64
pandas: 0.18.1
numpy: 1.11.1
IPython: 5.2.2
Run Code Online (Sandbox Code Playgroud)

Wou*_*ter 11

好的,现在我明白了,谢谢你们的评论!

所以inplace = True应该返回None 在原始对象中进行更改.似乎再次列出数据框,没有任何变化.

但当然我不应该将返回值分配给数据帧,即

testDataframe = testDataframe.set_index(['Codering'], inplace=True)
Run Code Online (Sandbox Code Playgroud)

应该只是

testDataframe.set_index(['Codering'], inplace=True)
Run Code Online (Sandbox Code Playgroud)

否则,就地索引的返回值变化(无)是数据帧的新内容,当然不是意图.

我相信这对很多人来说是显而易见的,现在对我来说也是如此,但这并非没有你的帮助,谢谢!