我有以下代码:
grouped_stats = stats.groupby( stats.last_mv.ne( stats.last_mv.shift()).cumsum() )
last_mv是一个十进制值 在上面的代码中,我按连续值分组
我正在尝试两种方法来获取组last_mv值中的第一项高出0.25%的第一值。换句话说,我已按连续的last_mv值分组,我想选择每个组的第一个,乘以1.025,然后在与该值匹配的组中找到第一个值(如果存在)
我尝试过:
grouped_stats.filter(lambda x: x.last_mv >= (x.first().last_mv * 1.025))
但是我无法使用.first()访问该组中的第一行,
我也尝试过
grouped_stats.loc[ grouped_stats.last_mv >= (grouped_stats.first().last_mv * 1.025) ]
但是出现错误:“无法访问'DataFrameGroupBy'对象的可调用属性'loc',请尝试使用'apply'方法”
答案 0 :(得分:2)
我相信您需要transform
用于Series
,其大小与原始DataFrame
相同,并按每组的第一个值填充:
stats[ stats.last_mv >= (grouped_stats.last_mv.transform('first') * 1.025) ]