根据其他列中的多个条件填充列

Vin*_*ini 2 python filtering numpy dataframe pandas

我正在努力解决这个问题.我有一个像DataFrame:

import pandas as pd

data = {'A': ['red', 'green', 'blue', 'green', 'yellow', 'blue'],
        'B': [1, 2, 1, 1, 2, 1]}

frame = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)

我想根据"A"列中的多个条件创建一个新列.例如,如果'A'是红色或蓝色,我希望这个新列等于10; 如果'A'是绿色,则等于20,依此类推.

问题是,我想我可以使用嵌套np.where,但我确实关心这里的可读性.

Psi*_*dom 5

您可以创建一个字典,将颜色定义为数字映射,然后使用mapA列上的方法:

color_to_num = {'red': 10, 'blue': 10, 'green': 20, 'yellow': 30}    
frame['new'] = frame.A.map(color_to_num)

frame
#      A    B   new
#0  red     1   10
#1  green   2   20
#2  blue    1   10
#3  green   1   20
#4  yellow  2   30
#5  blue    1   10
Run Code Online (Sandbox Code Playgroud)

或使用replace方法:

frame['new'] = frame.A.replace(color_to_num)
Run Code Online (Sandbox Code Playgroud)