我有这个数据框。
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
你可以使用 pd.Series.all
与 df.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