如何过滤数据框的列?

How to filter a column of a dataframe?

最近看到一道题,很耐人寻味。我试图找到解决方案,但我无法让它发挥作用。基本上,我正在尝试过滤数据框中的特定列。这是设置。

import pandas as pd
import numpy as np

df = pd.DataFrame({'cd1' : ['PFE1', 'PFE25', np.nan, np.nan], 
                   'cd2' : [np.nan, 'PFE28', 'PFE23', 'PFE14'], 
                   'cd3' : ['PFE15', 'PFE2', 'PFE83', np.nan], 
                   'cd4' : ['PFE25', np.nan, 'PFE39', 'PFE47'], 
                   'cd5' : [np.nan, 'PFE21', 'PFE53', 'PFE15']})

df

df['combined'] = df.agg(lambda x: list(x.dropna()), axis=1)
spec_list = ['PFE15', 'PFE25']
df

这给了我这个。

如何只过滤 'spec_list'?最终结果如下所示。

如果您不介意有一个没有匹配项的空列表,您可以这样做:

spec_set = set(spec_list)
df.combined.map(lambda x: list(spec_set.intersection(x))))

结果:

0    [PFE15, PFE25]
1           [PFE25]
2                []
3           [PFE15]