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