【问题标题】:How to iterate over DataFrame columns and drop NaN value [duplicate]如何迭代DataFrame列并删除NaN值[重复]
【发布时间】:2021-05-04 10:44:00
【问题描述】:

我有这个示例数据框:

d = {'col1': [1, 2, np.NaN], 'col2': [3, np.NaN, 4], 'col3': [np.NaN, 5, 6]}
df = pd.DataFrame(data=d)

并希望以这种方式删除 NaN 值以获得此形状的结果数据帧

我尝试遍历列并在每一列上使用 dropna() 函数,但这不起作用:

for i in columns:
    df3[i].dropna()

接下来我尝试的时候:

df = df.dropna(subset=['col1', 'col2','col3'])

我最终得到了 df,所有行都被删除了:

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    您可以使用 pandas 的“dropna”在一行中完成此操作。无需迭代。已经在这里问了:How to remove blanks/NA's from dataframe and shift the values up

    df = df.apply(lambda x: pd.Series(x.dropna().values))
    

    【讨论】:

    • 这行得通。谢谢。
    【解决方案2】:

    您不需要迭代。 您可以使用dropna 命令:

    df = df.dropna(subset=['col1', 'col2'])
    

    【讨论】:

    • 将此应用于他的示例并添加“col3”将删除所有行。
    • 是的,当我添加“col3”时,此解决方案删除了​​所有行
    猜你喜欢
    • 2020-05-10
    • 1970-01-01
    • 2021-11-04
    • 2021-09-08
    • 2017-11-05
    相关资源
    最近更新 更多