我想用0替换pandas DataFrame列中的负值.
有没有更简洁的方法来构造这个表达式?
df['value'][df['value'] < 0] = 0
Run Code Online (Sandbox Code Playgroud) 在对整个pandas数据帧执行计算之后,我需要返回并根据另一个变量的值覆盖变量计算(通常设置为零).是否有更简洁/惯用的方式来执行此类操作?
df['var1000'][df['type']==7] = 0
df['var1001'][df['type']==7] = 0
df['var1002'][df['type']==7] = 0
...
df['var1099'][df['type']==7] = 0
Run Code Online (Sandbox Code Playgroud)
有没有熊猫方式做这样的事情?
if (df['type']==7):
df['var1000'] = 0
df['var1001'] = 0
df['var1002'] = 0
...
df['var1099'] = 0
Run Code Online (Sandbox Code Playgroud) 我在下面的表格中有一个多索引数据框.如何将数据框中的所有值除以df ['three']?
one two three
Number 1 2 3 1 2 3 1 2 3
Name
grethe -0.299 -1.444 -0.920 1.378 0.376 -0.396 0.518 -0.816 -0.329
hans 0.493 1.183 -0.741 -0.267 -0.564 0.281 1.550 0.544 -0.892
Run Code Online (Sandbox Code Playgroud)
当我试试这个,
>>> df.div(df['three'])
Run Code Online (Sandbox Code Playgroud)
或这个
>>> df / df['three']
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda\lib\site-packages\pandas\core\frame.py", line 218, in f
return self._combine_frame(other, na_op, fill_value, level)
File "C:\Anaconda\lib\site-packages\pandas\core\frame.py", line 3819, in _combine_frame
this, other = self.align(other, join='outer', level=level, copy=False) …Run Code Online (Sandbox Code Playgroud) 我想用一个或多个其他列(df $ b,df $ c)的数学运算结果更新数据帧列(df $ d),条件是另一列(df $ a)的值.
set.seed(55)
df <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10), d = 0)
df$d[df$a > 0] <- df$b[df$a > 0] / df$c[df$a > 0]
Run Code Online (Sandbox Code Playgroud)
第三行产生df $ d的预期值.有没有办法更简洁地写这个?我对那些不需要我重复逻辑索引的选项特别感兴趣.
例如,这种表达式在Python/Pandas中起作用,并且在赋值运算符的左侧只需要一个'[df $ a> 0]'的实例:
df$d[df$a > 0] <- df$b / df$c
Run Code Online (Sandbox Code Playgroud)
感谢您提供任何建议.