2015-10-05 77 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 
相關問題