选择满足成员资格的熊猫数据帧



我有看起来像df数据

Label1 Label2
a      {l1,l2}
b      {l1}
c      {}
d      {l3}
e      {l3,l2}

我希望能够选择其 Label2 列包含 l2 的行,即带有 label1 =a and e 的行。 我知道isin方法,例如,df['Label2'].isin(..),但这不是同一类型的成员问题(更像是相反的问题(。我想要看起来像df['Label2'].contains('l2')的东西.

如果你有一系列sets,只需使用交集运算符&

df.loc[df['Label2'] & {'l2'}]

假设"l2"是一个字符串,而"Label2"由集合组成,一个简单的解决方案是将set列转换为字符串并执行str.contains

label = "l2"
df[df['Label2'].astype(str).str.contains(r'b{}b'.format(label))]
  Label1    Label2
0      a  {l1, l2}
4      e  {l2, l3}

另一种选择是列表理解:

df[['l2' in x if isinstance(x, set) else False for x in df['Label2']]]
  Label1    Label2
0      a  {l1, l2}
4      e  {l2, l3}

sets columns转换为 df 后将 isinany 一起使用

df[pd.DataFrame(df.Label2.tolist()).isin(['l2']).any(1)]

最新更新