大家好,我需要你们的帮助.

我有两列A和B的df,它们都是带string values的列

例子:

df_1 = pd.DataFrame(data={
    "A":['a','b','c'],
    "B":['a x d','z y w','q m c'] #string values not a list
})
print(df_1)

#output
   A      B
0  a  a x d
1  b  z y w
2  c  q m c

现在我要做的是在df_1中预先设置loc,以获得所有列B包含列A中字符串值的行.

在这个例子中,我想要的输出是第一行和第三行

   A      B
0  a  a x d # 'a x d' contain value 'a'
2  c  q m c # 'q m c' contain value 'c'

我try 了不同的loc条件,但得到了不可 destruct 的类型:"Series"错误:

df_1.loc[df_1["B"].str.contains(df_1["A"])] #TypeError: unhashable type: 'Series'
df_1.loc[df_1["A"] in df_1["B"]] #TypeError: unhashable type: 'Series'

由于df的大小,我真的不想使用for/while循环.

你知道我该怎么做吗?

推荐答案

没有矢量方法,使用两列映射in.你需要在这里循环:

mask = [a in b for a,b in zip(df_1['A'], df_1['B'])]

df_1.loc[mask]

输出:

   A      B
0  a  a x d
2  c  q m c
comparison of speed (3000 rows)
# operator.contains
518 µs ± 4.61 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

# list comprehension
554 µs ± 3.84 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

# numpy.apply_along_axis
7.32 ms ± 58.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

# apply
20.7 ms ± 379 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

Python相关问答推荐

如何使用entry.bind(FocusIn,self.Method_calling)用于使用网格/列表创建的收件箱

如何根据条件在多指标框架上进行groupby

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

如何使用matplotlib在Python中使用规范化数据和原始t测试值创建组合热图?

难以在Manim中正确定位对象

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

numpy卷积与有效

try 将一行连接到Tensorflow中的矩阵

pyscript中的压痕问题

如何使用scipy的curve_fit与约束,其中拟合的曲线总是在观测值之下?

什么是最好的方法来切割一个相框到一个面具的第一个实例?

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

lityter不让我输入左边的方括号,'

如何使用OpenGL使球体遵循Python中的八样路径?

如何将相同组的值添加到嵌套的Pandas Maprame的倒数第二个索引级别

如何在信号的FFT中获得正确的频率幅值

极柱内丢失类型信息""

有了Gekko,可以创建子模型或将模型合并在一起吗?