【问题标题】:Remove NaN from lists in Pandas dataframe [duplicate]从 Pandas 数据框中的列表中删除 NaN [重复]
【发布时间】:2021-06-14 10:23:45
【问题描述】:

我有一个数据框,其值是包含“nan”的列表。是否有一种简单且 Python 的方法可以从数据框中的列表中删除这些“nan”值?我已经定义了一个函数,它返回一个没有“nan”的列表,但我怎样才能将它应用到数据框?

def remove_nan(input_list):
    temp_list = [x for x in input_list if x!='nan']
    return temp_list

test = ['nan', 'nan', 'SHM System', 'nan', 'nan', 'nan']

remove_nan(test)
['SHM System']

此函数适用于单个列表并返回干净列表,如上面的输出所示。如何应用此功能,或者如果有更好的方法,从dataframe 的列表中删除所有“nan”值?我试过 applymap 和 apply 但没用。

df_combined.applymap(remove_nan)

【问题讨论】:

  • 显示你那段没用的代码...How to Askminimal reproducible example
  • 这就是我所做的:df_combined.applymap(remove_nan) 它没有改变数据框。
  • df.applymap(lambda x: [*filter(pd.notna, x)])
  • 你试过df_combined = df_combined.applymap(remove_nan) 吗? applymap 方法不会修改原始 DataFrame,除非您将其设置为等于返回的内容
  • @DerekO 是的,我可以看到这个数据框的副本,它是一样的。没有改变。

标签: python pandas dataframe nan python-applymap


【解决方案1】:

以下代码行对我有用。感谢@piRSquared。

df.applymap(lambda x: [*filter(pd.notna, x)])

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2012-11-13
    • 2019-09-15
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多