Pandas DataFrame单元格含列表时常规操作失效的解决方法咨询
Pandas DataFrame单元格含列表时常规操作失效的解决方法咨询
嗨,我最近在处理Pandas DataFrame时碰到了一个棘手的问题,想请教下各位有没有更简洁的解决思路!
情况是这样的:我有一个DataFrame(是更大数据集的一部分),记录了每个人旅行时去过的州,其中states_visited列里有的单元格是列表,有的是单个字符串。示例代码和数据结构如下:
import pandas as pd df = pd.DataFrame({'states_visited': [['NY', 'CA'], 'CA', 'CA']}, index = ['John', 'Mary', 'Joe'])
对应的DataFrame展示:
states_visited John [NY, CA] Mary CA Joe CA
问题来了:
- 当我想用常规方法
df['states_visited'].unique()获取唯一的州访问组合(也就是我期望得到[['NY', 'CA'], 'CA'],想知道哪些州是一起去的,哪些是单独去的)时,直接报错:TypeError: unhashable type: 'list',因为列表是不可哈希类型,unique()方法没办法处理。 - 同样,我想判断谁去过NY时,用
df['states_visited'].str.contains('NY')也不行,John那行会返回NaN,因为str系列方法只对字符串类型的单元格生效,列表类型的单元格处理不了。
目前我只能用比较繁琐的方式来实现判断去过NY的用户,比如:
df['states_visited'].explode() .dropna() .str.contains('NY') .groupby(level=0).any()
想请教下各位,有没有更高效、简洁的方法来处理这种单元格包含列表的DataFrame?比如快速获取唯一的列表/字符串组合,或者直接判断某个元素是否存在于单元格的列表中?
备注:内容来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

