在列中的Groupby中,条件是返回布尔值?

问题描述 投票:0回答:1

我有这个数据框。

     equipment      value      loc
0       ac1         43.2       acs_blg
1       ac2         23.1       acs_blg
2       ac3         0.0        acs_blg
3       ac4         44.4       acs_blg
4       kz1         12.1       qet_blg
5       kz2         87.2       qet_blg
6       kz3         65.3       qet_blg
7       yy1         0.0        cna_blg
8       uu1         55.3       ppp_blg
9       uu2         0.0        ppp_blg

如果一个loc的其中一个设备的值为0,那么我应该得到一个布尔值false,否则如果所有设备的值大于0,那么它应该返回true。我很确定需要使用groupby来对loc进行分组。

最终结果

     loc        boolean
0    acs_blg    false
1    qet_blg    true
2    cna_blg    false
3    ppp_blg    false
python pandas dataframe pandas-groupby
1个回答
4
投票

你可以使用 pd.Series.alldf.groupby 这里。

df.groupby('loc')['value'].all() # Thanks to YOBEN_S for pointing this.
#df.groupby('loc')['value'].apply(pd.Series.all)

loc
acs_blg    False
cna_blg    False
ppp_blg    False
qet_blg     True
Name: value, dtype: bool

要保留设置的顺序 sort 组的参数为 False.

df.groupby('loc',sort=False)['value'].all()

loc
acs_blg    False
qet_blg     True
cna_blg    False
ppp_blg    False
Name: value, dtype: bool
© www.soinside.com 2019 - 2024. All rights reserved.