当前位置: 首页 > 面试题库 >

Pandas,过滤其中哪一列包含另一列的行

谢胤
2023-03-14
问题内容

如何过滤包含另一列的行?例如,如果我们有两列A,B的DT,是否可以使用B.contains(A)过滤行?不仅B是否包含来自DT的所有A中的一些A值,而且还只是一行。

AB
大声笑
'ram''rambo'
'ki''pio'

结果:
AB
大声笑
'ram''rambo'

问题答案:

您可以使用boolean indexingapply和(in如果需要)过滤器列AB每行创建的掩码:

#if necessary strip ' in all values
df = df.apply(lambda x: x.str.strip("'"))
#df = df.applymap(lambda x: x.strip("'"))

print (df.apply(lambda x: x.A in x.B, axis=1))
0     True
1     True
2    False
dtype: bool

df = df[df.apply(lambda x: x.A in x.B, axis=1)]
print (df)
     A      B
0  lol  lolec
1  ram  rambo

解决方案的差异 -输入DataFrame已更改:

print (df)
     A      B
0  lol    pio
1  ram  rambo
2   ki  lolec

print (df[df.apply(lambda x: x.A in x.B, axis=1)])
     A      B
1  ram  rambo

print (df[df['B'].str.contains("|".join(df['A']))])
    A      B
1  ram  rambo
2   ki  lolec


 类似资料:
  • 我有一个这样的数据帧 我想得到相同的所有数据,修改为只保留在tokeep中的字符串。 理想情况下,我希望将 我第一次想我可以用这样的东西 但我无法找到解决方案。 有人能指导我吗?

  • 问题内容: 说我有以下pandas数据框: 我如何“堆叠”“ b”列中的列表以将其转换为数据框: 问题答案: 更新: 通用矢量化方法-也适用于多列DF: 假设我们有以下DF: 解: 设定: 向量化NumPy方法: 旧答案: 尝试这个: 或@Boud提供的更好的解决方案:

  • 我在数据库中有一个包含(id、日期、类别、行、持续时间)的表,我每天都有许多注册表,例如(1,12/12/2014,cat1,ligne1,12)(2,12/2014,cat2,ligne1,10)(3,12/12/2014,cat3,ligne2,23) (4,13/12/2014,cat1,LINGE1,10)(5,13/12/2014,cat2,LINGE1,20)(6,13/12/2014

  • 问题内容: 我需要将DataFrame中除第一列之外的所有列除以第一列。 这是我正在做的事情,但我想知道这是否不是“正确的”熊猫方式: 有没有办法做类似的事情?(这只是给出了一个10x12的数据框。) 另外,在阅读了关于SO的一些类似问题之后,我尝试了一下,但是给出了广播错误。 问题答案: 我相信并工作。

  • 问题内容: 我需要基于Pandas数据框中的另一列的值来设置一列的值。这是逻辑: 我无法做到这一点,我想要做的就是简单地创建一个具有新值的列(或更改现有列的值:任何一个都对我有用)。 如果我尝试运行上面的代码,或者将其编写为函数并使用apply方法,则会得到以下信息: 问题答案: 一种方法是将索引与配合使用。 例 在没有示例数据框的情况下,我将在此处进行补充: 假设您想 创建一个新列 ,除wher

  • 我有个名单 我需要用java生成一组列表,如下所示 以下是我目前的代码 输出 预期