我有以下数组:
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'来查找任何变量。在里面。但是,如果我把它变成一个函数,我想我可以得到一个解决方法。
答案 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