Pandas中Series系列子集的条件变换

时间:2017-03-22 21:36:38

标签: python pandas

在Pandas(Python)中进行以下转换的最简洁方法是什么:

number   color
 10      blue
 15      red
 25      green
 35      blue
 15      pink
 30      green
  5      red
 20      blue
 50      red

进入

number   color
 10      blue
 15      FALSE
 25      FALSE
 35      blue
 15      FALSE
 30      green
  5      FALSE
 20      blue
 50      red

基本上,我想改变所有数字<&lt;&lt; 30但该规则仅适用于颜色不是蓝色的情况。

谢谢!

2 个答案:

答案 0 :(得分:2)

一种方法 -

df.loc[(df.number < 30) & (df.color != 'blue'),'color'] = False

示例运行 -

In [409]: df
Out[409]: 
   number  color
0      10   blue
1      15    red
2      25  green
3      35   blue
4      15   pink
5      30  green
6       5    red
7      20   blue
8      50    red

In [410]: df.loc[(df.number < 30) & (df.color != 'blue'),'color'] = False

In [411]: df
Out[411]: 
   number  color
0      10   blue
1      15  False
2      25  False
3      35   blue
4      15  False
5      30  green
6       5  False
7      20   blue
8      50    red

答案 1 :(得分:1)

您可以使用“应用”代替地图。 Apply在每一行上运行该函数。

def mod_color(row) : 
    if row.number < 30 and row.color != 'blue': 
        row.color = False
    return row

df.apply(mod_color, axis=1)