使用列表作为pandas数据帧中的值

时间:2017-11-20 08:35:24

标签: python pandas

我想要在数据框中插入一些数据。数据为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'

在这种情况下,什么是更好的方式来表示类别,并希望能够在特定类别或类别中查找标题?

1 个答案:

答案 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]