python – Pandas:根据特定列的值计数选择行
发布时间:2020-12-20 13:02:40 所属栏目:Python 来源:网络整理
导读:什么是从熊猫数据框中选择所有行的最简单方法,谁的sym在整个表中恰好出现两次?例如,在下表中,我想在[‘b’,’e’]中选择带有sym的所有行,因为这些符号的value_counts等于2. df=pd.DataFrame({'sym':['a','b','c','d','e','e'],'price':np.random.randn(9)})
什么是从熊猫数据框中选择所有行的最简单方法,谁的sym在整个表中恰好出现两次?例如,在下表中,我想在[‘b’,’e’]中选择带有sym的所有行,因为这些符号的value_counts等于2.
df=pd.DataFrame({'sym':['a','b','c','d','e','e'],'price':np.random.randn(9)}) price sym 0 -0.0129 a 1 -1.2940 b 2 1.8423 b 3 -0.7160 c 4 -2.3216 d 5 -0.0120 d 6 -0.5914 d 7 0.6280 e 8 0.5361 e df.sym.value_counts() Out[237]: d 3 e 2 b 2 c 1 a 1 解决方法
我认为您可以使用列sym的
groupby 和长度== 2的
filter 值:
print df.groupby("sym").filter(lambda x: len(x) == 2) price sym 1 0.400157 b 2 0.978738 b 7 -0.151357 e 8 -0.103219 e 第二个解决方案使用 s = df.sym.value_counts() print s[s == 2].index Index([u'e',u'b'],dtype='object') print df[df.sym.isin(s[s == 2].index)] price sym 1 0.400157 b 2 0.978738 b 7 -0.151357 e 8 -0.103219 e
print (df[df.groupby("sym")["sym"].transform('size') == 2]) price sym 1 -1.2940 b 2 1.8423 b 7 0.6280 e 8 0.5361 e (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |