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 的行?
谢谢
假设 email
是 df
的拼写错误,并且我正确理解您要执行的操作:您要添加的列中的空格必须用 一些 值。您不能创建甚至没有某些行的条目的列。只要没问题,我建议先创建所有值都设置为 "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"] = ""
在以下数据帧 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 的行?
谢谢
假设 email
是 df
的拼写错误,并且我正确理解您要执行的操作:您要添加的列中的空格必须用 一些 值。您不能创建甚至没有某些行的条目的列。只要没问题,我建议先创建所有值都设置为 "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"] = ""