gpt4 book ai didi

python - 用单元格中的列表子集 Pandas 数据框

转载 作者:行者123 更新时间:2023-11-28 22:39:19 25 4
gpt4 key购买 nike

假设我有以下数据框

df = pd.DataFrame({'col1': ['one','one', 'one', 'one', 'two'],
'col2': ['two','two','four','four','two'],
'col3': [['alpha', 'beta'],
['alpha', 'beta'],
['alpha', 'beta'],
['alpha', 'beta'],
['alpha', 'nodata', 'beta', 'gamma']]})

我知道我可以子集化:

df[df['col2']=='four']

如何进行子集匹配以匹配列表中的字符串?在此示例中,子集 col3 中不包含“nodata”的行?

df[~df['col3'].str.contains('nodata') 

似乎不起作用,我似乎无法正确访问列表中的“正确”项目。

最佳答案

您可以将applylambda 函数结合使用,而不是转换数据类型,这样会更快一些。

df[~df.col3.apply(lambda x: 'nodata' in x)]

在更大的数据集上测试它:

In [86]: df.shape
Out[86]: (5000, 3)

我的解决方案:

In [88]: %timeit df[~df.col3.apply(lambda x: 'nodata' in x)]
1000 loops, best of 3: 1.68 ms per loop

以前的解决方案:

In [87]: %timeit df[~df['col3'].astype(str).str.contains('nodata')]
100 loops, best of 3: 7.8 ms per loop

虽然可以说第一个答案可能更具可读性。

关于python - 用单元格中的列表子集 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34887957/

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