Python 创建一个函数,根据条件返回长度
我有2个数据帧-1个包含股票行情和最高/最低价格范围以及其他列 另一个数据框以日期作为索引,并根据不同的指标(如开盘、收盘、高低等)按股票代码分组。现在,我想从这个数据框中计算出给定股票收盘价高于最低价格的天数Python 创建一个函数,根据条件返回长度,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有2个数据帧-1个包含股票行情和最高/最低价格范围以及其他列 另一个数据框以日期作为索引,并根据不同的指标(如开盘、收盘、高低等)按股票代码分组。现在,我想从这个数据框中计算出给定股票收盘价高于最低价格的天数 我被困在这里:现在我想知道AMZN有多少天的交易低于时段最高价格 我想根据第一个数据帧的值计算第二个数据帧的天数,计算收盘价小于/大于最大/最小期间价格的天数 我添加了代码来重现数据帧 请检查屏幕截图 使用此选项复制: {"Values_Close":{"AMZN":2286.04003
我被困在这里:现在我想知道AMZN有多少天的交易低于时段最高价格
我想根据第一个数据帧的值计算第二个数据帧的天数,计算收盘价小于/大于最大/最小期间价格的天数 我添加了代码来重现数据帧 请检查屏幕截图 使用此选项复制:
{"Values_Close":{"AMZN":2286.0400390625,"BABA":194.4799957275,"FB":202.2700042725},"Values_High":{"AMZN":2362.4399414062,"BABA":197.3800048828,"FB":207.2799987793},"Values_Low":{"AMZN":2258.1899414062,"BABA":192.8600006104,"FB":199.0500030518},"Values_Open":{"AMZN":2336.8000488281,"BABA":195.75,"FB":201.6000061035},"Values_Volume":{"AMZN":9754900.0,"BABA":22268800.0,"FB":30399600.0},"Period_High_Max":{"AMZN":2475.0,"BABA":231.1399993896,"FB":224.1999969482},"Period_Low_Min":{"AMZN":1307.0,"BABA":129.7700042725,"FB":123.0199966431},"%_Position":{"AMZN":0.8382192115,"BABA":0.6383544892,"FB":0.7832576338}}
{"Stock":{
"0":"AMZN",
"1":"AMZN",
"2":"AMZN",
"3":"AMZN",
"4":"AMZN",
"5":"AMZN",
"6":"AMZN",
"7":"AMZN",
"8":"AMZN",
"9":"AMZN",
"10":"AMZN",
"11":"AMZN",
"12":"AMZN",
"13":"AMZN",
"14":"AMZN",
"15":"AMZN",
"16":"AMZN",
"17":"AMZN",
"18":"AMZN",
"19":"AMZN"},
"Date":{
"0":1525305600000,
"1":1525392000000,
"2":1525651200000,
"3":1525737600000,
"4":1525824000000,
"5":1525910400000,
"6":1525996800000,
"7":1526256000000,
"8":1526342400000,
"9":1526428800000,
"10":1526515200000,
"11":1526601600000,
"12":1526860800000,
"13":1526947200000,
"14":1527033600000,
"15":1527120000000,
"16":1527206400000,
"17":1527552000000,
"18":1527638400000,
"19":1527724800000 },
"Close_price":{
"0":1572.0799560547,
"1":1580.9499511719,
"2":1600.1400146484,
"3":1592.3900146484,
"4":1608.0,
"5":1609.0799560547,
"6":1602.9100341797,
"7":1601.5400390625,
"8":1576.1199951172,
"9":1587.2800292969,
"10":1581.7600097656,
"11":1574.3699951172,
"12":1585.4599609375,
"13":1581.4000244141,
"14":1601.8599853516,
"15":1603.0699462891,
"16":1610.1500244141,
"17":1612.8699951172,
"18":1624.8900146484,
"19":1629.6199951172}}
在数据帧、公司(索引level=0
)和自定义函数之间执行以下操作:
df_merge = close_price_data.merge(
latest_day[['Period_High_Max', 'Period_Low_Min']],
left_index=True,
right_index=True)
def fun(df):
d = {}
d['days_above_min'] = (df.Close_price > df.Period_Low_Min).sum()
d['days_below_max'] = (df.Close_price < df.Period_High_Max).sum()
return pd.Series(d)
df_merge.groupby(level=0).apply(fun)
df\u merge=close\u price\u data.merge(
最近一天[[时段最高时段最低时段最高时段]],
左索引=真,
右(索引=真)
def fun(df):
d={}
d['days\u over\u min']=(df.Close\u price>df.Period\u Low\u min).sum()
d['days_lower_max']=(df.Close_price
Period\u Low\u Min
和Period\u High\u Max
分别是最小值和最大值,因此所有收盘价都将在该范围内,如果这不是您想要实现的,请让我知道。在两个数据帧、公司(索引级别=0
)和自定义函数之间执行以下操作:
df_merge = close_price_data.merge(
latest_day[['Period_High_Max', 'Period_Low_Min']],
left_index=True,
right_index=True)
def fun(df):
d = {}
d['days_above_min'] = (df.Close_price > df.Period_Low_Min).sum()
d['days_below_max'] = (df.Close_price < df.Period_High_Max).sum()
return pd.Series(d)
df_merge.groupby(level=0).apply(fun)
df\u merge=close\u price\u data.merge(
最近一天[[时段最高时段最低时段最高时段]],
左索引=真,
右(索引=真)
def fun(df):
d={}
d['days\u over\u min']=(df.Close\u price>df.Period\u Low\u min).sum()
d['days_lower_max']=(df.Close_price
Period\u Low\u Min
和Period\u High\u Max
分别是最小值和最大值,因此所有收盘价都在该范围内,如果这不是您想要实现的,请告诉我。请问一个具体问题。你停留在哪一部分?现在我想找出AMZN低于时段最高价格的交易天数。你的代码中有错误,变量没有定义,如data\u metric
,请创建一个最小可复制的示例。我想根据第一个数据帧的值计算第二个数据帧的天数,收盘价低于/高于时段高点/时段低点的天数(见截图)我们理解您的意图,但没有办法重现变量,答案可能在您的环境中不起作用。请提出具体问题。你停留在哪一部分?现在我想找出AMZN低于时段最高价格的交易天数。你的代码中有错误,变量没有定义,如data\u metric
,请创建一个最小可复制的示例。我想根据第一个数据帧的值计算第二个数据帧的天数,计算收盘价低于/高于期间高点/期间低点的天数(参见屏幕截图)我们了解您试图做什么,但没有办法重现变量,答案可能在您的环境中不起作用。谢谢,我想根据百分比(如高于或低于范围10%)计算天数。如下所示:d['days\u over\u min']=(df.Close\u price>df.Period\u Low\u min*1.1)。sum()太棒了,您可以在fun
函数中定义范围。很高兴看到这一点。谢谢,我想根据百分比(比如高于或低于10%)计算一天。如下所示:d['days\u over\u min']=(df.Close\u price>df.Period\u Low\u min*1.1)。sum()太棒了,您可以在fun
函数中定义范围。很高兴读到这篇文章。