如果我使用“inplace = True”重置我的Pandas数据帧的索引(在the documentation之后),则返回一个类'NoneType'。如果我使用“inplace = False”重置索引,则返回带有新索引的数据帧。为什么呢?
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
但是带有“inplace = True”的set_index相同:
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
答案 0 :(得分:8)
好的,现在我明白了,谢谢你们的评论!
所以inplace = True应该返回None 和在原始对象中进行更改。似乎再次列出数据框,没有任何变化。
但当然我不应该将返回值分配给数据帧,即
testDataframe = testDataframe.set_index(['Codering'], inplace=True)
应该只是
testDataframe.set_index(['Codering'], inplace=True)
否则原位索引的返回值更改(无)是数据帧的新内容,当然不是打算。
我相信这对很多人来说是显而易见的,现在对我来说也是如此,但这并非没有你的帮助,谢谢!
答案 1 :(得分:0)
inplace =在原始data_frame中始终更改为True。如果要更改data_frame,请删除第二个参数,即inplace = True
new_data_frame = testDataframe.set_index(['Codering'])
然后
print(new_data_frame)