Python pandas 实施条件类别

Python pandas implement conditional categories

在以下数据帧 df 中:

Type  Description Counts
A        blue      34645
A        red       45765
B        red       36587
C        green     42653

我想实现类别层次结构,但仅限于类型 A。

我正在使用此代码:

category_hierarchy={
'blue':'in progress',
'red':'review'}

df['Category_Hierachy'] = df['Description'].replace(category_hierarchy)

但是,这会创建以下内容:

Type  Description Counts  Category_Hierachy
A        blue      34645    in progress
A        red       45765    review
B        red       36587    review
C       green      42653    green

代替

Type  Description Counts  Category_Hierachy
A        blue      34645    in progress
A        red       45765    review
B        red       36587    
C       green      42653    

如何将我的代码仅应用于类型 A 的行?

谢谢

假设 emaildf 的拼写错误,并且我正确理解您要执行的操作:您要添加的列中的空格必须用 一些 值。您不能创建甚至没有某些行的条目的列。只要没问题,我建议先创建所有值都设置为 "default" 的新列,然后才分配给 Type'A' 的行。

在代码方面,您可以创建一个用空字符串填充的新列,如

df['Category_Hierarchy'] = ''

(替换您选择的默认值)然后您可以使用布尔索引仅引用类型 A 的行。

index = df['Type'] == 'A'
df.loc[index, 'Category_Hierarchy'] = ...

最后一行将仅分配给 Category_Hierarchy 列中的单元格,这些单元格位于 Type'A' 的行中。

使用应用

def custom_apply(row):

    if row['Type'] == 'A':

        return category_hierarchy[row['Description']]

    return ''

df['Category_Hierachy'] = df.apply(custom_apply, 1)

使用isin

idx = df['Type'].isin(['B', 'C'])
df.ix[idx, "Category_Hierachy"] = ""