Python 熊猫过滤器,其中当前行字符串包含不同列中上一行的字符串

Python 熊猫过滤器,其中当前行字符串包含不同列中上一行的字符串,python,pandas,Python,Pandas,我有以下数据帧: df = pd.DataFrame({'col1':['1', np.nan, '2', np.nan, np.nan, '3', '4', '7', np.nan], 'col2':[np.nan, '1,2', np.nan, '0,3', '0,3', np.nan, np.nan, np.nan, '7,8']}) 看起来是这样的: col1 col2 0 1 NaN 1 NaN 1,2 2 2 NaN 3 NaN 0,3 4 NaN

我有以下数据帧:

df = pd.DataFrame({'col1':['1', np.nan, '2', np.nan, np.nan, '3', '4', '7', np.nan], 'col2':[np.nan, '1,2', np.nan, '0,3', '0,3', np.nan, np.nan, np.nan, '7,8']})
看起来是这样的:

  col1 col2
0    1  NaN
1  NaN  1,2
2    2  NaN
3  NaN  0,3
4  NaN  0,3
5    3  NaN
6    4  NaN
7    7  NaN
8  NaN  7,8
我试图找出如何创建一个向量化过滤器,该过滤器将返回
col2
值包含前一行
col1
值的行。如果
col1
col2
NaN
,则不应考虑该行。因此,在该df上,结果应为:

1  NaN  1,2
8  NaN  7,8
起初,我考虑将
col1
向下移动1,并使用类似于
isin

 df[(df['col1'].shift(1).fillna('').isin(something in here)]
但是后来我意识到,
isin
不会单独处理每一行,也就是说,它会检查每一行是否在同一个列表中。因此,现在我确信我应该使用类似于
df['col2'].str.contains(df['col2'])
的东西,但我不太确定如何处理移位以及什么不可以

同样,目标是有一个矢量化过滤器,这样我就可以做到:

filtered_rows = df[(filter_here)]
我将感谢任何帮助

df = pd.DataFrame({'col1':['1', np.nan, '2', np.nan, np.nan, '3', '4', '7', np.nan], 'col2':[np.nan, '1,2', np.nan, '0,3', '0,3', np.nan, np.nan, np.nan, '7,8']})
df['col1_shifted'] = df['col1'].shift(1)
mask = df.apply(
    lambda x: x.col1_shifted in str(x.col2).split(',')
    if x.col1_shifted
    else False, axis=1
)
filtered_rows = df[mask][['col1', 'col2']]

filtered_rows

  col1 col2
1  NaN  1,2
8  NaN  7,8