gpt4 book ai didi

python - 如何按字符串过滤 Pandas 数据框?

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:22 24 4
gpt4 key购买 nike

我有一个 pandas 数据框,我想按列中的特定单词(测试)进行过滤。我试过了:

df[df[col].str.contains('test')]

但它返回一个只有列名的空数据框。对于输出,我正在寻找一个包含所有包含“测试”一词的行的数据框。我能做些什么?

编辑(添加示例):

data = pd.read_csv(/...csv)

数据有 5 列,包括 'BusinessDescription',我想提取 Business Description 列中所有包含单词 'dental'(不区分大小写)的行,所以我用了:

filtered = data[data['BusinessDescription'].str.contains('dental')==True]

我得到一个空数据框,其中只有 5 列的标题名称。

最佳答案

看来您需要参数 flags in contains :

import re

filtered = data[data['BusinessDescription'].str.contains('dental', flags = re.IGNORECASE)]

另一种解决方案,谢谢 Anton vBR首先转换为小写:

filtered = data[data['BusinessDescription'].str.lower().str.contains('dental')]

示例:
对于 future 的编程,我建议在引用数据帧时使用关键字 df 而不是 data。使用该表示法是围绕 SO 的常见方式。

import pandas as pd

data = dict(BusinessDescription=['dental fluss','DENTAL','Dentist'])
df = pd.DataFrame(data)
df[df['BusinessDescription'].str.lower().str.contains('dental')]

BusinessDescription
0 dental fluss
1 DENTAL

时间:

d = dict(BusinessDescription=['dental fluss','DENTAL','Dentist'])
data = pd.DataFrame(d)
data = pd.concat([data]*10000).reset_index(drop=True)

#print (data)

In [122]: %timeit data[data['BusinessDescription'].str.contains('dental', flags = re.IGNORECASE)]
10 loops, best of 3: 28.9 ms per loop

In [123]: %timeit data[data['BusinessDescription'].str.lower().str.contains('dental')]
10 loops, best of 3: 32.6 ms per loop

警告:

性能实际上取决于数据 - DataFrame 的大小和匹配条件的值的数量。

关于python - 如何按字符串过滤 Pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48020296/

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