繁体   English   中英

为关键字过滤 dataframe 列,从找到每个关键字的行中返回单独的列值(名称)

[英]Filter a dataframe column for a keyword, return seperate column value (name) from the row where each keyword is found

如果有一个数据框,并且如果我在另一列中找到关键字,我想返回一列中的值。 所以下面如果我搜索apple ,我希望 output 是[a,b]

像这样:

names words
a     apple
b     apple
c     pear

我想要一个列表: [a,b]

我找到了使用str.contains返回 boolean 值的方法,但不确定如何从同一行中的另一列中获取值,这将为我命名。 一定有一个帖子我找不到如果有人可以指导我那里。

你可以做

list(df[df['words'].str.contains('apple')]['names'])

导致

['a', 'b']
  1. df['words'].str.contains('apple')为条件构建一个 boolean pandas 系列
  2. 上一行产生的系列用于过滤原始 dataframe df
  3. 在上一行产生的 dataframe 中,选择了“名称”列
  4. 在上一行产生的 dataframe 中,该列是一个列表

完整代码:

import io
import pandas as pd
data = """
names words
a     apple
b     apple
c     pear
"""
df = pd.read_csv(io.StringIO(data), sep='\s+')

lst = list(df[df['words'].str.contains('apple')]['names'])


>>>print(lst)

['a', 'b']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM