dropna 用 None 填充所有列,而不仅仅是 NaN 值

问题描述 投票:0回答:1

使用有关起点和终点的 DataFrame,类似于 Uber 应用程序。

它给了我一个包含 2 列的 DataFrame,其中有很多 NaN 值:其中一些是 NaN,其他是写为“nan”的字符串类型。它的编写方式的一个例子可能是这样的:

data = [
    ["Sevilla","Granada"],
    ["nan","Madrid"],
    ["Burgos",NaN],
    ["Badajoz","Valencia"],
    [NaN,NaN],
    [NaN,"nan"],
    [NaN,"Barcelona"]
    ]
    df = pd.DataFrame(
        data,
        columns=["start_station_name", "end_station_name"],
    )
    print(df)

所以你应该消除“nan”和NaN。主要问题是,当我使用 .dropna(inplace=True) 时,它会消除所有值并显示 None,我如何保留好的值?

我尝试过以下方法。

首先,我用 NotaNumbers 替换了所有“nan”,不是 NaN 值。 其次,我删除了所有 NaN 值,同时保留城市名称。

    df["start_station_name"] = df["start_station_name"].replace("nan",np.nan)
    df["end_station_name"] = df["end_station_name"].replace("nan",np.nan)

    df["start_station_name"] = df["start_station_name"].dropna(inplace=True)
    df["end_station_name"] = df["end_station_name"].dropna(inplace=True)

    print(df[["start_station_name","end_station_name"]])

它只显示无(所以所有值都是无)

python dataframe replace nan in-place
1个回答
0
投票

您可能想将

replace('nan', float('nan')
dropna
how='all'
结合起来:

out = df.replace('nan', float('nan')).dropna(how='all')

输出:

  start_station_name end_station_name
0            Sevilla          Granada
1                NaN           Madrid
2             Burgos              NaN
3            Badajoz         Valencia
6                NaN        Barcelona
© www.soinside.com 2019 - 2024. All rights reserved.