Pandas使用其他列的值添加公式列

时间:2017-11-18 00:33:38

标签: pandas

我有一个现有的df。我想用列RSI扩展它。 RSI使用函数rsi_func(close)计算,该函数返回一个数字。我已经尝试过官方pandas doc看到编码2)和3)和Stackoverflow answer,请参阅编码7)和许多其他示例,我无法让它发挥作用。 我试过了,当然没有编号:

    1)  df['RSI'] = rsi_func(df['close'])
    2)  df.assign(RSI=lambda x: rsi_func(close))
    3a) rsi = rsi_func(df['close'])
    3b) print(rsi)
    3c) df.assign(RSI=rsi)
    4)  df.assign(RSI=rsi_func(df['close']))
    5)  df.assign(RSI=lambda x: rsi_func(close))
    6)  df['RSI'] = df.apply(lambda x: rsi_func(x['close']))
    7)  df['RSI'] = df['close'].apply(rsi_func)

当我尝试3a + b + c时,会打印出一个带有RSI值的python列表。但3c不会将RSI附加到df。如何通过返回rsi_func(close)创建RSI并将其附加到df?

1 个答案:

答案 0 :(得分:0)

您可以使用带有lambda表达式的地图

df['RSI'] = df['close'].map(lambda x: rsi_func(x))

使用基本数据框进行测试:

def rsi_func(close):
    return close /10
df['RSI'] = df['close'].map(lambda x: rsi_func(x))
df
Out[11]: 
    close    RSI
0  20.02  2.002
1  20.04  2.004
2  20.05  2.005