从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
按列sym
和filter
值使用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
并用最快的解决方案transform
和boolean 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功能。有没有办法让我接受相似的值? 我也考虑过分组,然后选择包含这一行的组,但我认为有其他更好的方法