当前位置: 首页 > 面试题库 >

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

洪彬
2023-03-14
问题内容

从pandas数据框中选择所有行的最简单方法是什么?谁的符号在整个表中恰好出现两次?例如,在下表中,我想选择在[‘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

第二个解决方案使用isin与布尔索引:

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


 类似资料:
  • 问题内容: 我有这样的桌子 我需要选择何时类型为0,何时类型为1,何时类型为N … 我怎样才能做到这一点? 问题答案:

  • 我有一个字符串列表,它有{“val1”、“val2”、“val3”、“val4”}等值,我有三个不同的组合框。每个组合框有5个以上的项。 现在,我只想从列表中选择一个具有组合框项目不同组合的值。我尝试过使用if-else和switch语句,但它的过程非常繁琐。那么,解决这类问题的最佳方法是什么呢?GUI部分的屏幕截图。 GUI 提前感谢。 我有一个像这样的长长的嵌套开关盒

  • 在Pandas的数据框中,一些列是数字的,像浮动;一些是非数字的,像对象。我们希望删除那些数值列为NaN的行,但不删除那些非数值列为NaN的行。 例如,对于具有四列的df:a、B、C和D。a和C的数据类型为Object,B和D的数据类型为Float。 我们将只删除其中一些数字列(浮点数)为NaN的行,而不应该删除其中一些非数字列(对象)为NaN的行。 最终结果如下: 我的步骤是: 检查哪些列的数据

  • 这不是一个重复的问题,但类似于 根据pandas中列中的值从数据帧中选择行

  • 我有一个pandas数据帧,其中3列X、Y和Z用于分组。我想基于代码中显示的条件为每个组更新列B(或将其存储在单独的列中)。但我得到的最后结果是零。我不确定我做错了什么。 下面是供参考的表格和代码:

  • 并且我想选择所有具有相同值的行作为第一行,我知道我可以查询数据帧后,我得到了x1和x2的值,这段代码。然而,我想要更一般的方式,如果我有更多的功能比x1和x2,说我想做同样的100功能。有没有办法让我接受相似的值? 我也考虑过分组,然后选择包含这一行的组,但我认为有其他更好的方法