Python 3.x Pandas dataframe:set_index with inplace=True返回一个非类型,为什么?
如果我用“inplace=True”(以下)重置Pandas数据帧的索引,它将返回一个类“NoneType”。如果我用“inplace=False”重置索引,它将返回带有新索引的数据帧。为什么?Python 3.x Pandas dataframe:set_index with inplace=True返回一个非类型,为什么?,python-3.x,pandas,Python 3.x,Pandas,如果我用“inplace=True”(以下)重置Pandas数据帧的索引,它将返回一个类“NoneType”。如果我用“inplace=False”重置索引,它将返回带有新索引的数据帧。为什么? print(type(testDataframe)) print(testDataframe.head()) 返回: <class 'pandas.core.frame.DataFrame'> ALandbouwBosbouwEnVisserij AantalInkomensont
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
返回
<class 'pandas.core.frame.DataFrame'>
ALandbouwBosbouwEnVisserij AantalInkomensontvangers \
Codering
NL00 73780.0 None
GM1680 290.0 None
WK168000 20.0 None
BU16800000 15.0 None
<class 'NoneType'>
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-50-0d6304ebaae1> in <module>()
返回
<class 'pandas.core.frame.DataFrame'>
ALandbouwBosbouwEnVisserij AantalInkomensontvangers \
Codering
NL00 73780.0 None
GM1680 290.0 None
WK168000 20.0 None
BU16800000 15.0 None
<class 'NoneType'>
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-50-0d6304ebaae1> in <module>()
好的,现在我明白了,谢谢你的评论 因此inplace=True应返回None,并在原始对象中进行更改。似乎在再次列出数据帧时,没有出现任何更改 但是当然,我不应该将返回值分配给数据帧,即
testDataframe = testDataframe.set_index(['Codering'], inplace=True)
应该是
testDataframe.set_index(['Codering'], inplace=True)
或
否则,inplace索引更改的返回值(None)就是数据帧的新内容,这当然不是我们想要的
我相信这对很多人来说是显而易见的,现在对我来说也是如此,但这不是没有你的帮助,谢谢 inplace=True始终在原始数据帧中更改。如果要更改数据帧,请删除第二个参数,即
inplace=True
new_data_frame = testDataframe.set_index(['Codering'])
然后
因为它在原地,所以对象被修改,为什么它要返回新修改的对象?如果您传递了
inplace=False
,那么它将返回新修改的对象,您是否检查了?非常清楚:inplace:boolean,默认为False。就地修改数据帧(不要创建新对象)
它为什么要返回某些内容?它在原地进行修改,这意味着当前数据帧已更新。返回对象本身很有趣,因此您可以执行类似于df=df。(.)重置索引(inplace=True)
。
testDataframe = testDataframe.set_index(['Codering'], inplace=False)
new_data_frame = testDataframe.set_index(['Codering'])
print(new_data_frame)