gpt4 book ai didi

pandas - 如何查找包含列表的系列元素?

转载 作者:行者123 更新时间:2023-12-01 23:16:49 25 4
gpt4 key购买 nike

我可以找到与元组匹配的系列单元...

>>> s = pd.Series([(1,2,3),(4,5,6)], index=[1,2])
>>> print s[s==(1,2,3)]
1 (1, 2, 3)
dtype: object

如何对列表执行相同的操作:

>>> s = pd.Series([[1,2,3],[4,5,6]], index=[1,2])
>>> print s[s==[1,2,3]]
ValueError: Arrays were different lengths: 2 vs 3

最佳答案

简单方法

s[s.apply(tuple) == (1, 2, 3)]

1 [1, 2, 3]
dtype: object

不太容易
假设所有子列表的长度相同

def contains_list(s, l):
a = np.array(s.values.tolist())
return (a == l).all(1)

s[contains_list(s, [1, 2, 3])]

1 [1, 2, 3]
dtype: object

时机
假设一个更大的系列

s = pd.Series([[1,2,3],[4,5,6]] * 1000)

%timeit s[pd.DataFrame(s.values.tolist(), index=s.index).isin([1,2,3]).all(1)]
100 loops, best of 3: 2.22 ms per loop

%timeit s[contains_list(s, [1, 2, 3])]
1000 loops, best of 3: 1.01 ms per loop

%timeit s[s.apply(tuple) == (1, 2, 3)]
1000 loops, best of 3: 1.07 ms per loop

关于pandas - 如何查找包含列表的系列元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43788170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com