首页 > 解决方案 > 为什么在使用应用结果时对数据框的块分配不起作用?

问题描述

我在 pandas 1.1.5 和 numpy 1.20.1 上,并且有一个与此 MWE 类似的用例,我试图一次性计算并为数据帧分配一个值块,但没有成功:

import numpy as np
import pandas as pd

df = pd.DataFrame(
    {"a": [1, 2, 3, 4], "b": [np.nan] * 4, "c": [np.nan] * 4}, dtype="Int64"
)
df.loc[pd.isnull(df["b"]) & pd.isnull(df["c"]), ["b", "c"]] = df.loc[
    pd.isnull(df["b"]) & pd.isnull(df["c"])
].apply(axis=1, func=lambda x: [1, 1], result_type="expand")

即使应用结果具有正确的块格式,数据帧仍保留为 NA。我也尝试过使用df.loc[...][cols]= 而不是df.loc[..., cols]没有成功。

上面的结果打印:

        a    b     c
    0   1   <NA>  <NA>
    1   2   <NA>  <NA>
    2   3   <NA>  <NA>
    3   4   <NA>  <NA>

而不是想要的:

        a    b    c
    0   1    1    1
    1   2    1    1
    2   3    1    1 
    3   4    1    1

标签: pythonpandasnumpy

解决方案


推荐阅读