2015-10-05 36 views
1

我试图应用一个函数,该函数返回股票(我已经在其上收集多天的价格)的最新或最大日期。返回熊猫数据框中每个股票名称的最大日期

我将使用此最大或最新日期去收集更多价格。

我的数据帧是当前形式:

in: df.head() 
columns: index(date) | stock_name 
2015-10-01    A 
2015-10-02    A 
2015-10-05    B 
2015-10-08    B 

def max(x): 
return x.idxmax() 

df["stock_name"].apply(max) 
out: 
A 2015-10-02 
B 2015-10-08 
+0

那么,什么是你的问题? –

+0

@AnandSKumar我找不出正确的语法来为每个股票名称返回MAX日期? – yoshiserry

+0

'df.groupby('stock_name')['date'] .max()'可能是? – Zero

回答

0

你需要做的是DataFrame.groupby()基于该'stock_name'场群。但要获得最大值,您可能首先需要重置索引(如果日期是索引,则不需要在下面的代码中执行reset_index(),并使用日期列的列名称)。示例 -

df.reset_index().groupby('stock_name')['index'].max() #Use `'date'` instead of `'index'` if the name of `index` is `'date'` . 

演示 -

In [27]: df 
Out[27]: 
      stock_name 
2015-10-01   A 
2015-10-02   A 
2015-10-05   B 
2015-10-08   B 

In [28]: df.reset_index().groupby('stock_name')['index'].max() 
Out[28]: 
stock_name 
A 2015-10-02 
B 2015-10-08 
Name: index, dtype: object 
相关问题