python - 标记组中的最后一个元素是否包含 Pandas 中的特定字符串

标签 python pandas numpy group-by pandas-groupby

我有数据:

Group   string
 A     Hello
 A     SearchListing
 A     GoSearch
 A     pen
 A     Hello
 A     Searches
 B     Real-Estate
 B     Access
 B     Denied
 B     Group
 B     Group
 C     Glance
 C     NoSearch
 C     Home
 C     FullSearch

等等。

我想找到那些以包含“搜索”作为最后一个元素的字符串的组并标记它们。例如,我想要的输出是这样的:

  Group   Flag
   A       1
   B       0
   C       1

因为 A 和 C 的最后一个元素都包含字符串“search”。 我知道一种可以遍历所有元素的方法,如果最后一个元素包含“搜索”,它将对其进行标记。但它是一个使用循环的非常繁重的函数。 有没有更直接的方法?

最佳答案

使用str.contains:

(df.groupby('Group')['string']
   .last()
   .str.contains('search', case=False)
   .astype(int)
   .rename('Flag')
   .reset_index())

  Group  Flag
0     A     1
1     B     0
2     C     1

与上面类似(复制或重置索引以避免SettingWithCopyWarning)。

u = df.drop_duplicates('Group', keep='last').reset_index(drop=True)
u['Flag'] = u.pop('string').str.contains('search', case=False).astype(int)
u

  Group  Flag
0     A     1
1     B     0
2     C     1

关于python - 标记组中的最后一个元素是否包含 Pandas 中的特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54409676/

相关文章:

python - pandas - 如何仅将 DataFrame 的选定列保存到 HDF5

python - Matplotlib:从主轴映射值的次轴

python - 类型错误 : cannot concatenate 'str' and 'function' objects python files

python - Bootstrap 模态不更新模态内容

python - Sqlalchemy 按顺序获取最后 X 行

python - 根据 Pandas 中的条件重置总和

python - 在python中动态创建变量

python - 将数组归一化为标准正态分布

python - numpy:有效地与索引数组求和

python - Pandas DataFrame - 'pairwise' 连接作为基于唯一 id 的新列