Python 函数以捕获不同列中值之间的更改
是否有人可以帮助我使用一个简单的函数来捕获open和Last之间的变化,如下例所示: 数据:Python 函数以捕获不同列中值之间的更改,python,pandas,Python,Pandas,是否有人可以帮助我使用一个简单的函数来捕获open和Last之间的变化,如下例所示: 数据: Open High Low Last Timestamp 2014-03-04 1783.50 1796.00 1783.50 1793.25 2014-03-05 1793.25 1796.50 1790.50 1794.00 2014-03-06 1798.00 1802
Open High Low Last
Timestamp
2014-03-04 1783.50 1796.00 1783.50 1793.25
2014-03-05 1793.25 1796.50 1790.50 1794.00
2014-03-06 1798.00 1802.25 1795.00 1797.75
2014-03-07 1804.75 1805.50 1790.50 1798.75
对于我来说,在捕获诸如高
和低
之间的范围时,使用以下工具执行类似的功能非常简单:
def daily_range(df):
return df['High'] - df['Low']
但是我们如何使用Open
和Last
实现类似的功能呢
我将在此函数上使用apply
,在我的数据帧中获得一个新列,所需输出如下所示:
Open High Low Last Desired output
Timestamp
2014-03-04 1783.50 1796.00 1783.50 1793.25 9.75
2014-03-05 1793.25 1796.50 1790.50 1794.00 0.75
2014-03-06 1798.00 1802.25 1795.00 1797.75 -0.25
基本上,如果Open
高于Last
我需要做Open
-Last
,如果Last
高于Open
我需要做Last
-Open
。我可以在函数中使用if
来完成这项任务,但必须有更好的方法来完成这项简单任务,我希望找到这个方法
更新:
对不起,如果我的问题措辞不正确。然而,我确实用负值显示了期望输出期望输出(见上文)
2014-03-06下表中的移动为-0.25,但答案中给出的代码显示为0.25而非-0.25。你能帮忙吗
Open Last desired
Timestamp
2014-03-04 1783.50 1793.25 9.75
2014-03-05 1793.25 1794.00 0.75
2014-03-06 1798.00 1797.75 0.25
这将为您提供差值的绝对值(如果df['Last']
大于df['Open']
,它将变为df['Last']-df['Open']
)
另一方面,示例输出是df['Last']-df['Open']
的结果,没有绝对值
这将为您提供差值的绝对值(如果df['Last']
大于df['Open']
,它将变为df['Last']-df['Open']
)
另一方面,您的示例输出是
df['Last']-df['Open']
的结果,没有绝对值。谢谢。当我尝试应用时,d1['OC\u Range']=d1.apply(open\u close\u Range,axis=1)
我得到了AttributeError:(“'float'对象没有属性'abs',发生在索引2014-03-04 00:00:00')
为什么要使用apply?什么是“打开\关闭\范围”?请忽略我最后的评论。但是abs并没有给我负值。“基本上,如果Open高于Last,我需要执行Open-Last,如果Last高于Open,我需要执行Last-Open。”根据这个定义,你不应该有负值?你的输出看起来像是df[Last']-df['Open']
的结果。谢谢。当我尝试应用时,d1['OC\u Range']=d1.apply(open\u close\u Range,axis=1)
我得到了AttributeError:(“'float'对象没有属性'abs',发生在索引2014-03-04 00:00:00')
为什么要使用apply?什么是“打开\关闭\范围”?请忽略我最后的评论。但是abs并没有给我负值。“基本上,如果Open高于Last,我需要执行Open-Last,如果Last高于Open,我需要执行Last-Open。”根据这个定义,你不应该有负值?你的输出看起来像是df[Last']-df['Open']
的结果。
df['desired'] = (df['Open'] - df['Last']).abs()