Pandas 找出极端观测值之间的日期和差异

Pandas 找出极端观测值之间的日期和差异,pandas,function,extract,Pandas,Function,Extract,传递给apply的函数必须将dataframe作为其第一个参数,并返回dataframe、Series或scalar。apply随后将负责将结果重新组合到单个数据帧或序列中。因此,apply是一种高度灵活的分组方法 虽然apply是一种非常灵活的方法,但它的缺点是使用它可能比使用agg或transform等更具体的方法慢一些。Pandas提供了一系列的方法,比使用apply用于特定目的要快得多,所以在使用apply之前尝试使用它们。最简单的方法是使用groupby进行聚合,然后进行选择 # ma

传递给apply的函数必须将dataframe作为其第一个参数,并返回dataframe、Series或scalar。apply随后将负责将结果重新组合到单个数据帧或序列中。因此,apply是一种高度灵活的分组方法


虽然apply是一种非常灵活的方法,但它的缺点是使用它可能比使用agg或transform等更具体的方法慢一些。Pandas提供了一系列的方法,比使用apply用于特定目的要快得多,所以在使用apply之前尝试使用它们。

最简单的方法是使用
groupby
进行聚合,然后进行选择

# make index a column
df = df.reset_index()                      

# get min of holdings for each ticker
lowest = df[['ticker','holdings']].groupby('ticker').min()
print(lowest)

# select lowest my performing a left join (solutions with original)
# this gives only the matching rows of df in return
lowest_dates = lowest.merge(df, on=['ticker','holdings'], how='left')
print(lowest_dates)    

如果您只需要一系列日期,可以使用此函数

def getLowest(df): 
    df = df.reset_index()
    lowest = df[['ticker','holdings']].groupby('ticker').min()
    lowest_dates = lowest.merge(df, on=['ticker','holdings'], how='left')
    return lowest_dates['Date']
从我的观点来看,最好返回整个数据帧,以知道哪个股票价格最低。在这种情况下,您可以:

return lowest_dates

嗨,Diamy,欢迎来到Stack Overflow。请不要发布数据的图像。相反,请提供它的实际文本。您可以使用三个倒勾(`````)来包围数据以获得更好的格式。如果您正在寻找函数,您希望得到什么?所有日期的清单?@oliver response没有向您提供这些信息吗?提供有关您期望函数输出的更多详细信息。感谢您的回复,但我们需要使用一个函数:def getLowest(df):