在python中比较1d和2d系列的有效方法
我有一个数据帧,其中一列作为字符串数组,第二列作为一个字符串值在python中比较1d和2d系列的有效方法,python,string,pandas,numpy,series,Python,String,Pandas,Numpy,Series,我有一个数据帧,其中一列作为字符串数组,第二列作为一个字符串值 a = pd.Series([["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"]]) b = pd.Series(["a","d","e", "c", "b"]) 我想检查a中是否包含b,但在运行isin函数时收到一个错误 b.isin(a) 任何解决办法。我在这里特别尝试避免循环,不确定这
a = pd.Series([["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"]])
b = pd.Series(["a","d","e", "c", "b"])
我想检查a中是否包含b,但在运行isin函数时收到一个错误
b.isin(a)
任何解决办法。我在这里特别尝试避免循环,不确定这是否是一个基于运行时的好策略
编辑:
**a b**
["a","b","c", "d"] a
["a","b","c", "d"] d
["a","b","c", "d"] e
["a","b","c", "d"] c
["a","b","c", "d"] b
预期输出是进行行比较的系列
[True True False True True]
这应该适合您:
import pandas as pd
a = pd.Series([["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"]])
b = pd.Series(["a","d","e", "c", "b"])
[x in y for y,x in zip(a,b)]
。。。其输出为:
[True, True, False, True, True]
pandas.Series
实现了一种方法,您可以通过以下方式使用该方法来查找b
中也出现在a
列表中的元素:
import pandas as pd
a = pd.Series([["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"],["a","b","c", "d"]])
b = pd.Series(["a","d","e", "c", "b"])
a.combine(b, lambda a,b: b in a)
输出:
0 True
1 True
2 False
3 True
4 True
dtype: object
预期的输出是什么?我不确定效率,但是
any(map(lambda x:x==b.tolist(),a))
应该可以工作;我编辑了帖子以包含所需的输出。感谢您指出这一点。b
在序列中有5个字符串,但是a
中的每一行只有4个元素。而且,a
中的所有行都相同。你能说说为什么你希望b
匹配前两行和后两行,而不是中间一行吗?啊!我明白你现在用最新的编辑是什么意思了。谢谢。谢谢分享一个不使用循环的方法。