Python Pandas:动态更改一个列

时间:2014-09-19 16:19:08

标签: python pandas

我有以下数组:

Key, Value

Up, a
Up, b
Up, b_regen
Up, c_regen
Down, a
Down, b
Down, b_regen
Down, c

其中值== * _regen将键更改为(键)_regen *为通配符

输出将是:

Up, a
Up, b
Up_regen, b_regen
Up_regen, c_regen
Down, a
Down, b
Down, c
Down_regen, b_regen

我已经走到了这一步:

x = df['Key'].values[df['Values'].values == 'b_regen'] = 'Up_regen'

但这不起作用,但它不是动态的。我需要Up / Down _regen部分不要像上面那样进行硬编码。 理想情况下,' b_regen'价值也不会被硬编码,并且会使用' _regen'来查找任何变量。在里面。但是,如果我把它变成一个函数,我想我可以得到一个解决方法。

1 个答案:

答案 0 :(得分:2)

如果你有DataFrame这样的话:

a = pandas.DataFrame([['Up', 'a'], ['Up', 'a_regen'], ['Down', 'b_regen']], columns=['key', 'value'])
>>> a
    key    value
0    Up        a
1    Up  a_regen
2  Down  b_regen

您可以创建一个函数,确定值列是否以'_regen'结尾,然后将其应用于您的值:

def is_regen(s):
    return s[-5:] == '_regen'

然后只需将字符串添加到键的末尾:

a.loc[a['value'].apply(is_regen), 'key'] += '_regen'
>>> a
          key    value
0          Up        a
1    Up_regen  a_regen
2  Down_regen  b_regen