gpt4 book ai didi

python - Pandas :根据特定列的值计数选择行

转载 作者:太空狗 更新时间:2023-10-30 00:21:01 25 4
gpt4 key购买 nike

从 Pandas 数据框中选择所有行的最简单方法是什么,谁的 sym 在整个表中正好出现两次?例如,在下表中,我想选择 ['b','e'] 中所有带有 sym 的行,因为这些符号的 value_counts 等于 2。

df=pd.DataFrame({'sym':['a', 'b', 'b', 'c', 'd','d','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

最佳答案

我想你可以使用 groupby按列 symfilter length == 2 的值:

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

第二种解决方案使用isinboolean indexing :

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

最快的解决方案是 transformboolean indexing :

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

关于python - Pandas :根据特定列的值计数选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com