返回在Pandas中按名称过滤的列的最后一个值

时间:2015-02-17 06:20:09

标签: python pandas

我有这样的数据集:

DATE,OPTION,SELL,BUY,DEAL
2015-01-01 11:00:01, blah1,0,1,open
2015-01-01 11:00:01, blah2,0,1,open
2015-01-01 11:00:01, blah3,0,1,open
2015-01-01 11:00:02, blah1,0,1,open
2015-01-01 11:00:02, blah2,0,1,open
2015-01-01 11:00:02, blah3,0,1,open

我在熊猫中使用以下方式阅读:

df = pd.DataFrame.from_csv(csv_data)
那里没问题。

你如何归还&#34; blah2&#34; 最后 &#34;卖出&#34; ?< / p>

谢谢

4 个答案:

答案 0 :(得分:1)

(df[df['OPTION'] == 'blah2']).tail(1)['SELL']

获取所有选项的最后卖出价值:

df[['SELL','OPTION']].groupby("OPTION").apply(lambda x: x.tail(1))

答案 1 :(得分:1)

您可以按OPTION对其进行分组,并按如下方式获取给定组的最后一行:

import pandas as pd

df = pd.read_csv('data.csv')

grouped_df = df.groupby('OPTION')

print(grouped_df.get_group(' blah2').tail(1))

这给出了:

4  2015-01-01 11:00:02   blah2     0    1  open

答案 2 :(得分:0)

b [b ['OPTION'] =='blah2']。iloc [-1] ['卖']

答案 3 :(得分:0)

可以在groupby对象上调用一个方便方法last,这会返回每个组的最后一个值,然后我们可以在索引值上过滤这个df:

In [75]:

gp = df.groupby('OPTION').last()
gp
Out[75]:
                       DATE  SELL  BUY  DEAL
OPTION                                      
 blah1  2015-01-01 11:00:02     0    1  open
 blah2  2015-01-01 11:00:02     0    1  open
 blah3  2015-01-01 11:00:02     0    1  open
In [76]:

gp[gp.index == ' blah2']
Out[76]:
                       DATE  SELL  BUY  DEAL
OPTION                                      
 blah2  2015-01-01 11:00:02     0    1  open