小编jus*_*nvf的帖子

如何通过正则表达式过滤pandas中的行

我想在其中一列上使用正则表达式干净地过滤数据帧.

对于一个人为的例子:

In [210]: foo = pd.DataFrame({'a' : [1,2,3,4], 'b' : ['hi', 'foo', 'fat', 'cat']})
In [211]: foo
Out[211]: 
   a    b
0  1   hi
1  2  foo
2  3  fat
3  4  cat
Run Code Online (Sandbox Code Playgroud)

我想将行过滤为f使用正则表达式开头的行.先去:

In [213]: foo.b.str.match('f.*')
Out[213]: 
0    []
1    ()
2    ()
3    []
Run Code Online (Sandbox Code Playgroud)

这不是太有用了.但是这会得到我的布尔索引:

In [226]: foo.b.str.match('(f.*)').str.len() > 0
Out[226]: 
0    False
1     True
2     True
3    False
Name: b
Run Code Online (Sandbox Code Playgroud)

所以我可以通过以下方式来限制:

In [229]: foo[foo.b.str.match('(f.*)').str.len() > 0]
Out[229]: 
   a    b
1  2  foo
2  3  fat …
Run Code Online (Sandbox Code Playgroud)

python regex pandas

144
推荐指数
7
解决办法
13万
查看次数

将非数字因子转换为数字列,并在R中进行映射

我有一个因素data frame与像水平hot,warm,tepid,cold,very cold,freezing.我想将它们映射到一个整数列,其值在[-2, 2]回归范围内,一些值映射到同一个东西.我希望能够指定显式映射,以便将very hot单词映射到2,将单词映射very cold-2,等等.如何干净地执行此操作?我想要一个函数,我只是传递一些命名列表,或者其他什么.

r

7
推荐指数
2
解决办法
6852
查看次数

有yield ignore()值("平均收益率")

我有一张地图,我想通过yield将它转换为一个新的集合,根据键进行过滤.我只希望地图条目的子集在新集合中.

scala> val the_map = Map(1->10, 2->41, 3->41, 27->614, 400->541, 5214 -> 2)
the_map: scala.collection.immutable.Map[Int,Int] = Map(1 -> 10, 2 -> 41, 27 -> 614, 3 -> 41, 400 -> 541)

scala> val transformed = for ((k, v) <- the_map) yield {if (k < 10) { v * 10 } else if (k > 100 && k < 400) { v * 5 }}
transformed: scala.collection.immutable.Iterable[AnyVal] = List(100, 410, (), 410, 2705, ())
Run Code Online (Sandbox Code Playgroud)

所以我基本上想要那个,但是没有()s,并且类型是Iterable [Int].这里有什么正确的方法?我可以过滤删除()然后施放,但这似乎是错误的.我可以将所有的值都放在底部,然后调用flatten,但这似乎过分了.有干净的路吗?我只想要yield忽略当没有if语句匹配时返回的().

scala

0
推荐指数
1
解决办法
202
查看次数

标签 统计

pandas ×1

python ×1

r ×1

regex ×1

scala ×1