选择数据帧中任何列等于lis中任何项的行

2024-09-27 17:53:27 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据帧,我想选择任何一行,其中任何一个值等于列表中的任何项:^{{cd1>}

>>> import pandas as pd
>>> d1=pd.DataFrame([['A','B','C','D'],['D','Q','S', np.nan],['R',np.nan,np.nan,np.nan],[np.nan,'A',np.nan,np.nan]],columns=['Code1','Code2','Code3','Code4'])
>>> d1
  Code1 Code2 Code3 Code4
0     A     B     C     D
1     D     Q     S   NaN
2     R   NaN   NaN   NaN
3   NaN     A   NaN   NaN
>>> 

这可以通过一行代码轻松完成:

^{pr2}$

但是,假设我有以下第二个数据帧索引,与第一个为该子集添加条件的数据帧相同。

^{pr3}$

现在,我只想从d1中选择一个行,它们的任何值都等于我的列表中的任何时间,并且它们对应的“CodeStatus”(从d2)等于1。并且根据相应的代码状态I表示(Code1、CodeStatus1)、(Code2、CodeStatus 2)等的对

我有一个笨拙的方法来完成这一点,这需要遍历4个代码和代码状态中的每一个。见下表:

^{pr4}$

如您所见,记录1现在从数据帧中删除,因为它有一列代码为“D”,但该代码的代码状态不等于1。

是否有一种更优雅的方法来实现这个查询,而不需要遍历每个列?


Tags: 数据方法代码列表状态npnand1

热门问题