相关疑难解决方法(0)

根据if-elif-else条件创建新列

我有一个DataFrame df:

    A    B
a   2    2 
b   3    1
c   1    3
Run Code Online (Sandbox Code Playgroud)

我想根据以下标准创建一个新列:

如果排 A == B: 0

如果排A > B: 1

如果排 A < B: -1

所以鉴于上表,它应该是:

    A    B    C
a   2    2    0
b   3    1    1
c   1    3   -1 
Run Code Online (Sandbox Code Playgroud)

对于if else我这样做的典型情况np.where(df.A > df.B, 1, -1),pandas是否提供了一个特殊的语法来一步解决我的问题(无需创建3个新列然后组合结果)?

python conditional pandas

57
推荐指数
5
解决办法
10万
查看次数

与np.nan和isnull()的比较之间的区别

我想是的

data[data.agefm.isnull()]
Run Code Online (Sandbox Code Playgroud)

data[data.agefm == numpy.nan]
Run Code Online (Sandbox Code Playgroud)

是等价的.但不,第一个真正返回agefm为NaN的行,但第二个返回一个空的DataFrame.我感谢省略的值总是等于np.nan,但似乎错了.

agefm列有float64类型:

(Pdb) data.agefm.describe()
count    2079.000000
mean       20.686388
std         5.002383
min        10.000000
25%        17.000000
50%        20.000000
75%        23.000000
max        46.000000
Name: agefm, dtype: float64
Run Code Online (Sandbox Code Playgroud)

你能解释一下,具体data[data.agefm == np.nan]意味着什么?

python numpy pandas

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

错误:'float' 对象没有属性 'isna'"

我有以下系列:

my_series = pd.Series([np.nan, np.nan, ['A', 'B']])
Run Code Online (Sandbox Code Playgroud)

我必须遍历 my_series 并评估该值是否为 NaN,然后​​执行某些操作(为简单起见,将操作定义为“执行 A”和“执行 B”)。

第一次尝试:

for element in my_series:
    if element.isna():
        print('do A')
    else:
        print('do B')
Run Code Online (Sandbox Code Playgroud)

运行它时,出现错误:“'float' 对象没有属性 'isna'”

从问题第二次尝试错误:浮动对象没有属性notnull

for element in my_series:
    np.where(element.isnull(), 'do A', 'do B')
Run Code Online (Sandbox Code Playgroud)

运行它时,出现错误:“ AttributeError: 'float' object has no attribute 'isnull'

我在 StackOverflow 上没有发现任何其他类似的问题,我不知道还能尝试什么。

python pandas

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

标签 统计

pandas ×3

python ×3

conditional ×1

numpy ×1