我有数据:
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/