python - 在Python中的其他列列表中选择具有列值的行

标签 python pandas

我有一个具有以下格式的 Pandas 数据框:

col1  col2  ...      col4
   A     2        [2-3-4]
   B     3        [2-6]
   A     3        [2-3-4]
   C     2        [2-3-4]
   D     2        [2-3-4]

我只想选择 col2 中的值在 col4 列表中的行。

我尝试使用:

df[(df["col2"].isin(df["col4"].str.split("-"))]

但我得到一个空数据框...

最佳答案

我会在此使用列表推导:

df[[str(a) in b for a,b in zip(df['col2'],df['col4'])]]

  col1  col2     col4
0    A     2  [2-3-4]
2    A     3  [2-3-4]
3    C     2  [2-3-4]
4    D     2  [2-3-4]

或者使用不会匹配 2 和 22 的正则表达式搜索 #thanks @Nk03

import re
df[[bool(re.search(fr'\b{a}\b',b)) for a,b in zip(df['col2'],df['col4'])]]

关于python - 在Python中的其他列列表中选择具有列值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67357815/

相关文章:

python - 如何使用 scipy.weave 更改 python 代码? (如何用代码做得更快?)

Python:从类属性中减去的递归方法?

pandas - 为什么使用 "to_excel"保存时 Pandas 数据框样式丢失?

python - Pandas :计算字符串中的点 - 与长度相同?

python - 如何在 Matplotlib 中更改文本颜色?

python - 将 .format() 与大量替换字段一起使用

python - 如何在 Sphinx 文档中包含 PDF?

python 正则表达式 替换 unicode

python - 构造的相同 MultiIndex DataFrame 不会聚合(意味着)

python - pandas:将距离矩阵转换为字典,其中元素按接近度排序