Pandas 使用其他列的值使用公式添加列
我有一个现有的df。我想用RSI列来扩展它。 RSI使用返回数字的函数RSI_func(close)计算。我试过官方的代码(参见编码2)和3),以及编码7)和许多其他示例,但都无法实现。 我试过了,当然没有编号:Pandas 使用其他列的值使用公式添加列,pandas,Pandas,我有一个现有的df。我想用RSI列来扩展它。 RSI使用返回数字的函数RSI_func(close)计算。我试过官方的代码(参见编码2)和3),以及编码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(rs
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?您可以将map与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
可以将map与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
['close']是df中带有数值的列。打印(df.descripe())返回['close']
df.assign()
的最小值、最大值、平均值等。它不会改变df的位置-它会返回修改后的df,所以将其分配回df:df=df.assign(…)
谢谢,df确实是用RSI扩展的,但所有行在['RSI']中都包含相同的值。“RSI_func(close)返回一个数字”
-很明显,如果函数返回标量值,那么每个行中都会有标量值。我怀疑rsi_func的返回是一个列表,而不是单个值。当我将rsI_func修改为close*2时,['rsI']保存close*2的值。因此,我怀疑我的问题在de rsi_func中。['close']是df中带有数值的列。打印(df.descripe())返回['close']df.assign()
的最小值、最大值、平均值等。它不会改变df的位置-它会返回修改后的df,所以将其分配回df:df=df.assign(…)
谢谢,df确实是用RSI扩展的,但所有行在['RSI']中都包含相同的值。“RSI_func(close)返回一个数字”
-很明显,如果函数返回标量值,那么每个行中都会有标量值。我怀疑rsi_func的返回是一个列表,而不是单个值。当我将rsI_func修改为close*2时,['rsI']保存close*2的值。因此,我怀疑我的问题出在de rsi_func中。我得到一个索引器:列表分配索引超出范围“作为结果。检查关闭列中的n/a字段,使用测试更新答案。我得到一个索引器:列表分配索引超出范围”作为结果。检查关闭列中的n/a字段,使用测试更新答案