我想要在数据框中插入一些数据。数据为columns= ['Title', 'Category']
。对于每个标题,我有一个或多个类别,我决定将类别作为列表插入。所以我的df看起来像这样:
In [39]: title_cat_df
Out[39]:
Title Category
0 Title1 [Cat1, Cat2]
1 Title3 [Cat5]
2 Title2 [Cat3, Cat4]
...
...
...
但是,我不知道这是一种pythonic / pandaionic(?!)方法,因为我偶然发现了诸如使用isin
查找特定类别等问题:
In [41]: test_df['Category'].isin(cat_list)
Out[41]: TypeError: unhashable type: 'list'
在这种情况下,什么是更好的方式来表示类别,并希望能够在特定类别或类别中查找标题?
答案 0 :(得分:2)
将列转换为set
并使用&
与转换为set
的列表交叉:
cat_list = ['Cat1','Cat2', 'Cat4']
print (test_df['Category'].apply(set) & set(cat_list))
0 True
1 False
2 True
Name: Category, dtype: bool
最后按boolean indexing
过滤:
test_df = test_df[test_df['Category'].apply(set) & set(cat_list)]
print (test_df)
Title Category
0 Title1 [Cat1, Cat2]
2 Title2 [Cat3, Cat4]