如何在DataFrame单列中匹配所有行共有的逗号分隔值?
找出DataFrame列中所有行共有的值
问题场景
假设我们有如下DataFrame(仅展示目标列):
first_column 1 hallo, test, twee, dire 2 hi, vier, twee, vijf 3 biep, boep, yes, twee
需要找出该列所有行共有的值,预期输出为:
twee
尝试使用match()函数未成功,需实现该需求。
解决方法
通过分割字符串+集合交集的方式实现,具体代码如下:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'first_column': [ 'hallo, test, twee, dire', 'hi, vier, twee, vijf', 'biep, boep, yes, twee' ] }) # 1. 将每行字符串分割为去空格后的元素集合 row_sets = df['first_column'].apply(lambda x: set(item.strip() for item in x.split(','))) # 2. 计算所有集合的交集,得到所有行共有的值 common_values = set.intersection(*row_sets) # 输出结果 print('\n'.join(common_values))
关键步骤说明
- 分割字符串时用
strip()去除每个元素前后的空格,避免因空格导致的匹配失败 - 集合的
intersection方法可以直接求多个集合的交集,这是找出共有元素的高效方式 - 如果存在多个共有值,输出会每行展示一个
内容的提问来源于stack exchange,提问作者szmple
相关产品推荐
相关产品推荐

