我有一个现有的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?
答案 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