小编Nio*_*urf的帖子

python pandas dataframe:用条件均值填充nans

我有以下数据帧:

import numpy as np 
import pandas as pd
df = pd.DataFrame(data={'Cat' : ['A', 'A', 'A','B', 'B', 'A', 'B'],
                        'Vals' : [1, 2, 3, 4, 5, np.nan, np.nan]})

    Cat   Vals
0   A     1
1   A     2
2   A     3
3   B     4
4   B     5
5   A   NaN
6   B   NaN
Run Code Online (Sandbox Code Playgroud)

我想要索引56填充基于'Cat'列的'Vals'的条件均值,即24.5

以下代码工作正常:

means = df.groupby('Cat').Vals.mean()
for i in df[df.Vals.isnull()].index:
    df.loc[i, 'Vals'] = means[df.loc[i].Cat]

    Cat   Vals
0   A     1
1   A     2
2 …
Run Code Online (Sandbox Code Playgroud)

python nan fill pandas

8
推荐指数
1
解决办法
4123
查看次数

Python:为什么说只引用的变量是隐式全局的?

Python FAQ中我们可以阅读:

在Python中,仅在函数内引用的变量是隐式全局变量

关于定义函数Python教程中,我们可以阅读:

函数的执行引入了用于函数局部变量的新符号表.更确切地说,函数中的所有变量赋值都将值存储在本地符号表中; 而变量引用首先在本地符号表中查找,然后在封闭函数的本地符号表中查找,然后在全局符号表中查找,最后在内置名称表中查找

现在我完全理解了教程语句,但后来说这variables that are only referenced inside a function are implicitly global对我来说似乎很模糊.

如果我们真的开始查看本地符号表,然后按照更"通用"的表格,那么为什么说它们是隐式全局的呢?它只是一种说法,如果你只想在一个函数中引用一个变量,你不需要担心它是本地的还是global

python global

6
推荐指数
1
解决办法
217
查看次数

哈斯克尔:在哪里使用警卫

guardswhereHaskell 之后是否可以使用定义函数?

这很好用:

myMax a b = a + b - myMin a b
    where myMin a b = if a < b then a else b
Run Code Online (Sandbox Code Playgroud)

但是这个

myMax a b = a + b - myMin a b
    where myMin a b
    | a < b      = a
    | otherwise  = b
Run Code Online (Sandbox Code Playgroud)

将在ghci中抛出以下错误消息:

parse error (possibly incorrect indentation or mismatched brackets)
Run Code Online (Sandbox Code Playgroud)

在对应的行上 | a < b = a

同样,这将工作:

myMax a b = 
  let myMin a …
Run Code Online (Sandbox Code Playgroud)

haskell where let

3
推荐指数
1
解决办法
485
查看次数

标签 统计

python ×2

fill ×1

global ×1

haskell ×1

let ×1

nan ×1

pandas ×1

where ×1