python - Pandas - 如何验证系列值 1 是否在系列值 2 中(在行级别)
问题描述
简单地说,我想弄清楚系列 1 中的字符串是否在同一个 DataFrame 和同一行的系列 2 中。从那里我将使用 True/False 值来过滤 DataFrame。我试过了:
df['column1'].isin(df['column2'])
。
这部分有效,但它不仅仅查看同一行。它正在查看整个系列并带回误报。下面的代码实现了我试图做的我只是想知道是否有更有效的代码?
# Create empty list
del_filt = []
# Use loop to create a list of True/False values
for i in range(len(df)):
del_filt.append(df.loc[i, 'Column1'] in df.loc[i, 'Column2'])
解决方案
逐行比较与我们拥有的向量化方法有点不同。
我们可以在这里使用列表推导zip
:
del_filt = [col1 in col2 for col1, col2 in zip(df['Column1'], df['Column2'])
或者我们可以使用DataFrame.apply
:
del_filt = df.apply(lambda x: x['Column1'] in x['Column2'], axis=1)
推荐阅读
- compiler-optimization - 如何通过正确的配置减少 tensorflow-lite 二进制文件的大小?
- javascript - 如何在点击时切换鼠标悬停事件?
- git - 在合并后执行 `git diff` 时避免写出最新的提交哈希
- c - Printf 未显示并返回值 3221225477
- c++ - Adafruit Fona 与 echo 服务器建立连接,但不发送任何数据
- excel - 如何解决我的代码给我一个编译错误的问题?
- java - Android Activity 不会自动出现在清单中?
- java - 替换字符串中的特定单词,给定单词所在索引的数组列表
- r - 无法在 R 3.3.0 上安装 data.table 包
- c# - MySql.Data,无法解析,因为它是针对另一个版本构建的