小编duc*_*thd的帖子

pandas:使用运算符链接过滤DataFrame行

在大部分操作pandas可以与运营商链接(来完成groupby,aggregate,apply,等),但我发现过滤行的唯一方法是通过正常的托架索引

df_filtered = df[df['column'] == value]
Run Code Online (Sandbox Code Playgroud)

这是没有吸引力的,因为它需要df在能够过滤其值之前分配给变量.有更像以下的东西吗?

df_filtered = df.mask(lambda x: x['column'] == value)
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

293
推荐指数
9
解决办法
48万
查看次数

使用Vim的持久撤消?

Vim 7.3的一个新功能是"持久性撤销",它允许在退出缓冲区时将非文本保存到文件中.

不幸的是,我还没能完全启用它,或者我必须使用它错了.这是我到目前为止所尝试的:

我在〜/ .vimrc中添加了以下内容

set undofile                " Save undos after file closes
set undodir=$HOME/.vim/undo " where to save undo histories
set undolevels=1000         " How many undos
set undoreload=10000        " number of lines to save for undo
Run Code Online (Sandbox Code Playgroud)

在此之后,我应该能够打开任何文件,编辑它,然后保存关闭它,当我再次打开它时,我应该能够撤消/重做,好像我永远不会离开.不幸的是,情况似乎并非如此,因为从未写过任何无人事务所.

笔记:

  1. 我在Win 7上使用来自Vim的Vim 7.3而没有奶油项目.持久撤消是烘焙的.

  2. $ HOME/.vim/undo存在于我的文件系统中

vim undo undo-redo

91
推荐指数
3
解决办法
3万
查看次数

pandas:对DataFrame行进行复杂过滤

我想通过每行的函数来过滤行,例如

def f(row):
  return sin(row['velocity'])/np.prod(['masses']) > 5

df = pandas.DataFrame(...)
filtered = df[apply_to_all_rows(df, f)]
Run Code Online (Sandbox Code Playgroud)

或者对于另一个更复杂,人为的例子,

def g(row):
  if row['col1'].method1() == 1:
    val = row['col1'].method2() / row['col1'].method3(row['col3'], row['col4'])
  else:
    val = row['col2'].method5(row['col6'])
  return np.sin(val)

df = pandas.DataFrame(...)
filtered = df[apply_to_all_rows(df, g)]
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

python pandas

78
推荐指数
5
解决办法
6万
查看次数

元组在地图操作中解包

我经常发现自己与元组的列表,序列和迭代器一起工作,并希望做类似以下的事情,

val arrayOfTuples = List((1, "Two"), (3, "Four"))
arrayOfTuples.map { (e1: Int, e2: String) => e1.toString + e2 }
Run Code Online (Sandbox Code Playgroud)

但是,编译器似乎从不同意这种语法.相反,我最终写作,

arrayOfTuples.map { 
    t => 
    val e1 = t._1
    val e2 = t._2
    e1.toString + e2 
}
Run Code Online (Sandbox Code Playgroud)

这真是太傻了.我怎么能绕过这个?

iterator scala tuples map iterable-unpacking

72
推荐指数
5
解决办法
3万
查看次数

如何跳转到视觉选择的开始/结束?

是否存在移动到视觉选择的开始或结束的动作?我知道o在视觉模式下两者之间交替,但我需要能够精确选择开始.总体目标是用括号围绕视觉选择区域.


根据评论,我能够使用以下宏实现此功能.这个想法是:

  1. <ESC> 退出视觉模式
  2. `> 到前一个视觉选择的结尾
  3. a) 附加一个右括号
  4. <ESC> 退出插入模式
  5. `< 转到上一个视觉选择的开始
  6. i( 插入一个左括号
  7. <ESC> 再次退出插入模式.

例如:

map \q <ESC>`>a)<ESC>`<i(<ESC>
Run Code Online (Sandbox Code Playgroud)

根据另一条评论,我们有一个更简洁的解决方案,

map \q c()<ESC>P
Run Code Online (Sandbox Code Playgroud)

vim

59
推荐指数
5
解决办法
1万
查看次数

在tmux中选择C- <number>的窗格

tmux,处理的默认行为C-b 0是跳转到窗口0.我想C-b C-0在当前窗口中跳转到窗格0.我尝试添加,

bind-key C-0 select-pane -t 0
Run Code Online (Sandbox Code Playgroud)

.tmux.conf失败了.还有什么我想念的吗?

tmux

32
推荐指数
2
解决办法
2万
查看次数

使用变量设置Vim选项

我有一个问题应该相当简单,但我还没有找到解决方案.我正在编辑我的.vimrc,并希望使用保存在变量中的结果设置一个选项.例如,我想在〜/ .vimetc中聚合我的所有临时文件.这就是我想做的事情,

let s:vimetc=$HOME.'/vimetc/'
set backupdir=s:vimetc.'backups/'
set directory=s:vimetc.'vimswap/'
set viewdir=s:vimetc.'vimswap/'
Run Code Online (Sandbox Code Playgroud)

当然,set不解析变量,所以我最终得到了文字| s:vimetc.'backups /'|,而不是我想要的.我尝试使用&s:vimetc,但结果相似.有谁知道如何做到这一点?

vim set let

17
推荐指数
1
解决办法
5245
查看次数

pandas:使用(row,col)索引设置值

pandas 提供了按行和列索引列表查找的功能,

In [49]: index = ['a', 'b', 'c', 'd']

In [50]: columns = ['one', 'two', 'three', 'four']

In [51]: M = pandas.DataFrame(np.random.randn(4,4), index=index, columns=columns)

In [52]: M
Out[52]: 
        one       two     three      four
a -0.785841 -0.538572  0.376594  1.316647
b  0.530288 -0.975547  1.063946 -1.049940
c -0.794447 -0.886721  1.794326 -0.714834
d -0.158371  0.069357 -1.003039 -0.807431

In [53]: M.lookup(index, columns) # diagonal entries
Out[53]: array([-0.78584142, -0.97554698,  1.79432641, -0.8074308 ])
Run Code Online (Sandbox Code Playgroud)

我想使用相同的索引方法来设置M元素.我怎样才能做到这一点?

python pandas

17
推荐指数
2
解决办法
4万
查看次数

防止pandas在read_csv中自动推断类型

我有一个#-separated文件有三列:第一个是整数,第二个看起来像浮点数,但不是,第三个是字符串.我尝试将其直接加载到python中pandas.read_csv

In [149]: d = pandas.read_csv('resources/names/fos_names.csv',  sep='#', header=None, names=['int_field', 'floatlike_field', 'str_field'])

In [150]: d
Out[150]: 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1673 entries, 0 to 1672
Data columns:
int_field          1673  non-null values
floatlike_field    1673  non-null values
str_field          1673  non-null values
dtypes: float64(1), int64(1), object(1)
Run Code Online (Sandbox Code Playgroud)

pandas尝试智能并自动将字段转换为有用的类型.问题是我实际上并不希望它这样做(如果我这样做,我会使用这个converters论点).如何防止pandas自动转换类型?

python pandas

15
推荐指数
2
解决办法
7437
查看次数

如何编写允许放入解释器的Scala 2.9代码

我不知道如何编写允许将解释器放入Scala 2.9代码的代码.这个问题是一个后续这一块,这要求斯卡拉相当于什么,

import pdb
pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

来自Python.那里给出的建议主要是针对Scala 2.8,相关的包不再存在于以前的形式中.也就是说,

  1. scala.nsc.tools.nsc.Interpreter.{break, breakIf} 已被转移到 scala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}
  2. DebugParam现在NamedParam在scala.tools.nsc.interpreter中

正如原始帖子中所述,父进程的类路径不会自动传递给新的解释器,因此这里提供一种解决方法.不幸的是,那里调用的许多类/方法现在已经改变了,我不太确定如何修改代码表现为"预期".

谢谢!

编辑:这是我的测试代码,在当前编译和运行,但尝试在调试器中执行任何操作导致应用程序冻结,如果编译scalac和执行scala

import scala.tools.nsc.interpreter.ILoop._

object Main extends App {

  case class C(a: Int, b: Double, c: String) {
    def throwAFit(): Unit = {
      println("But I don't wanna!!!")
    }
  }

  // main
  override def main(args: Array[String]): Unit = {

    val c = C(1, 2.0, "davis")

    0.until(10).foreach {
      i => 
        println("i = " + i)
        breakIf(i …
Run Code Online (Sandbox Code Playgroud)

debugging interpreter scala

14
推荐指数
1
解决办法
997
查看次数