Python 带重置索引的Pandas链方法drop/dropna
我有一个问题,我不知道为什么会这样,我想获得更多的知识 所以我的问题是,我试图用drop或dropna和reset_index链接方法,但出于某种原因,当我提到reset_index的Python 带重置索引的Pandas链方法drop/dropna,python,pandas,indexing,reset,Python,Pandas,Indexing,Reset,我有一个问题,我不知道为什么会这样,我想获得更多的知识 所以我的问题是,我试图用drop或dropna和reset_index链接方法,但出于某种原因,当我提到reset_index的inplace=True参数时,它不起作用 当我使用此选项时: df.dropna(how='all',axis=(0,1)).reset_索引(drop=True) df.drop(索引=0)。reset_索引(drop=True) 并将其保存到一个变量中,它似乎正在工作。但当我使用这个: df.dropna(
inplace=True
参数时,它不起作用
当我使用此选项时:
df.dropna(how='all',axis=(0,1)).reset_索引(drop=True)
df.drop(索引=0)。reset_索引(drop=True)
并将其保存到一个变量中,它似乎正在工作。但当我使用这个:
df.dropna(how='all',axis=(0,1)).reset_索引(drop=True,inplace=True)
df.drop(索引=0).reset_索引(drop=True,inplace=True)
然后打印df.head(),它似乎不起作用
不确定我在这里遗漏了什么,但我想更好地理解方法链接
谢谢 > P> >理解为什么<代码>大熊猫< /代码>中的方法链接不适用于<代码> in Stest= true考虑在没有方法链接的引擎盖下发生了什么:
inplace=False
时,在经过1和2
之后,该方法返回应手动分配的数据帧副本
如果在方法链之间设置inplace=True
,例如:
df.method1().method2(inplace=True).method3()
下一种方法,即method3
在接收到类型为None
的对象时将失败
现在,你可能会想,如果是这样的话,我们最好在最后设置它:
df.method1().method2(inplace=True)
然而,捕获物是;链中的每个方法都会为下一个方法返回一个数据帧副本,而下一个方法又会创建该副本的另一个副本。这里,method2对method1的副本(copy1
)的副本(copy2
)进行操作,进行一些计算,将copy2
保存回copy1
,并在销毁所有中间副本的同时返回None
这就是为什么在将方法链接在一起时应避免使用
inplace=True
。使用inplace=True
调用的pandas方法返回None,然后将其分配给=
左侧的任何变量。您不能将inplace=True
与方法链接结合起来:谢谢您的回答。因此,即使在最后一个函数中给出了inplace=True,它也不可能吗?我现在明白为什么不可以了,因为第一个函数返回dataframe,第二个函数返回特定dataframe,而这个dataframe并没有保存在任何地方。非常感谢。