Python pandas数据帧切片,if条件

时间:2013-09-13 15:39:30

标签: python pandas dataframe

我有一个DataFrame对象,有多列:business_idcategoriestype_of_business ...

我已设法通过对原始DataFrame对象进行列索引,仅使用business_idcategories创建一个较小的DataFrame。

categories是特定字符串的列表。示例:['Restaurant, 'food', 'bakery'] - 每个business_id

其中一个类别是Restaurants。如何仅检索字段Restaurants位于类别列表中的那些商家ID。

伪代码:

for row in smaller_DataFrame:
    if 'Restaurants' in row['categories']:
        add this business_id to some dictionary.

我对如何将if条件合并到DataFrame对象感兴趣。

提前致谢。

2 个答案:

答案 0 :(得分:4)

根据布尔条件选择行在文档中称为 masking

df[df['categories'].isin(['Restaurant', 'food', 'bakery'])]

顺便说一句,我看到你被投票了。如果您包含DataFrame的一些示例行以及所需结果的示例,那就更好了。

要使其不区分大小写,请在.str.lowercase()之前粘贴.isin,并将类别列表全部小写。

答案 1 :(得分:2)

您可以使用地图:

df[df.categories.map(lambda cats: 'Restaurants' in cats)]