Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Pandas dataframe:set_index with inplace=True返回一个非类型,为什么?_Python 3.x_Pandas - Fatal编程技术网

Python 3.x Pandas dataframe:set_index with inplace=True返回一个非类型,为什么?

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

如果我用“inplace=True”(以下)重置Pandas数据帧的索引,它将返回一个类“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   
返回

<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)