大熊猫根据布尔数组在原地修改列值

2024-07-08 08:17:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道如何基于另一列的值创建一个新的列applynp.where,但是有选择地更改现有列的值的方法正在转义我;我怀疑涉及到df.ix?我很亲近吗?

例如,这里有一个简单的数据帧(mine有上万行)。如果名称以字母“e”结尾,我想更改“flag”列中的值(假设为“Blue”):

>>> import pandas as pd
>>> df = pd.DataFrame({'name':['Mick', 'John', 'Christine', 'Stevie', 'Lindsey'], \
        'flag':['Purple', 'Red', nan, nan, nan]})[['name', 'flag']]
>>> print df

        name    flag
0       Mick  Purple
1       John     Red
2  Christine     NaN
3     Stevie     NaN
4    Lindsey     NaN
[5 rows x 2 columns]

我可以根据我的条件生成一个布尔级数:

>boolean_result = df.name.str.contains('e$')
>print boolean_result
0    False
1    False
2     True
3     True
4    False
Name: name, dtype: bool

我只需要关键的一步来得到以下结果:

>>> print result_wanted
        name    flag
0       Mick  Purple
1       John     Red
2  Christine    Blue
3     Stevie    Blue
4    Lindsey     NaN

Tags: namedfblueredresultnanjohnflag

热门问题