在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但该规则仅适用于颜色不是蓝色的情况。
谢谢!
答案 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)