python - 在数据框中搜索多个子值
问题描述
我有一个数据框 df['Source']
0 171.180.124.101 171.123.116.77 168.241.122.156 171.161.223.100
1 171.180.134.102
2 171.180.123.103
3 171.180.122.104
4 171.180.111.104 171.161.223.100
5 171.180.111.134 171.123.116.77
我需要在“源”数据框中搜索多个 IP。
输入值 = 171.123.116.77、171.161.223.100
根据我的输入,我期望的输出是:(因为最匹配的值在第一行)
0 True
1 False
2 False
3 False
4 False
5 False
Name: Source, dtype: bool
用户输入值 = 171.123.116.77,171.161.223.100
我的尝试:
key_words = df['Source']
val1,val2,val3 = values.split(',')
sample = key_words.str.contains(val1) & key_words.str.contains(val2) & key_words.str.contains(val3) & key_words.str.contains(val4)
我在这里面临的限制是分配的变量,值字段可能会因用户输入而异,如何避免这种情况,有没有更好的方法/方法?
解决方案
您可以使用列表理解。
import pandas as pd
a = [
"171.180.124.101 171.123.116.77 168.241.122.156 171.161.223.100"
, "171.180.134.102"
, "171.180.123.103"
, "171.180.122.104"
, "171.180.111.104 171.161.223.100"
, "171.180.111.134 171.123.116.77"
]
s = pd.Series(a)
vals = ["171.123.116.77", "171.161.223.100"]
print(pd.DataFrame([s.str.contains(val) for val in vals]).all(0))
# 0 True
# 1 False
# 2 False
# 3 False
# 4 False
# 5 False
# dtype: bool
推荐阅读
- c# - 在 C# 中获取没有管理员权限的进程路径
- java - java代码中的越界异常,需要帮助(初学者)
- tla+ - 指定活性,这样 TLA+ 中就不会发生循环
- android - ARCore 发布图片导致崩溃
- java - 在 android 中创建 ViewModel doubles 以使用 espresso 单独测试片段
- java - Assign unique ID for every new Class (not instance!)
- python - Numpy 根据两个数组给出的不同起始索引在两个轴上切片固定长度
- php - 在 null laravel 7 上调用成员函数 store()
- java - Hibernate - 如何在不使用惰性策略加载整个对象的情况下为多对多关系加载 id 集合
- javascript - 是否可以从另一个脚本中停止一个脚本?