在以下数据框中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
INSTEAD OF
Type Description Counts Category_Hierachy
A blue 34645 in progress
A red 45765 review
B red 36587
C green 42653
如何将代码仅应用于类型为A的行?
谢谢
答案 0 :(得分:1)
假设email
是df
的拼写错误,并且我正确理解您要尝试的内容:您添加的列中的空格必须填充某些价值。您无法创建甚至没有某些行条目的列。只要这没关系,我建议创建新列,首先将所有值设置为“默认”,然后再分配给Type
为'A'
的行。
就代码而言,您可以创建一个填充空字符串的新列
df['Category_Hierarchy'] = ''
(替换您选择的默认值),然后您可以使用布尔索引仅引用类型A的行。
index = df['Type'] == 'A'
df.loc[index, 'Category_Hierarchy'] = ...
最后一行只会分配到Category_Hierarchy
列为Type
的行'A'
中的单元格。
答案 1 :(得分:1)
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"] = ""