在符合pandas数据框条件的数据框位置返回第一个值的位置

时间:2019-05-29 22:46:44

标签: python pandas dataframe pandas-groupby

我有这个数据框:

import pandas as pd
df = pd.DataFrame({'time': ['20:00', '23:00', '21:00', '21:00', '22:00', '22:00', '20:30'],
                   'traf': [100, 200, 25, 300, 100, 200, 100],
                   'num': [5, 3, 5, 6, 41, 34, 10]})
df = df.set_index(['time']).sort_index()
print(df)

        traf  num
time            
20:00   100    5
20:30   100   10
21:00    25    5
21:00   300    6
22:00   100   41
22:00   200   34
23:00   200    3

我正在尝试编写一个函数,以按列df['traf']的值聚合数据框,然后报告列{{ 1}}满足条件。

这是我正在做的事的示例,但是我不确定这是否合适。另外,由于我正在处理一个非常大的数据帧,因此我不确定这种方式是否足够有效。

df['num']

因此,根据以上结果,我希望我的输出成为num列中的第一个值,在本例中为5.0。

1 个答案:

答案 0 :(得分:1)

transformsum一起使用,然后再次使用groupby first

s=df.groupby(["time"])['traf'].transform('sum').gt(255)
df[s].groupby('time').num.first()
Out[207]: 
time
21:00     5
22:00    41
Name: num, dtype: int64

df.loc[s,'num'].iloc[0]
Out[211]: 5