【问题标题】:When i use the dropna function my dataframe turns into a "NoneType" object. why is this happening and how can I solve this issue当我使用 dropna 函数时,我的数据框变成了“NoneType”对象。为什么会发生这种情况,我该如何解决这个问题
【发布时间】:2019-09-20 08:32:28
【问题描述】:

我正在清理一些数据(已经有一段时间了),当我删除在两个特定列中的任何一个中具有 nan 的行时,我留下了一个“noneType”对象,我无法在该对象上运行任何进一步的函数。为什么会发生这种情况,我该如何解决。

我希望这会删除那些列中包含 nan 的行,但没想到它会更改为 'noneType'

df = df.dropna(subset=['Step Age', 'Process Age'], inplace = True)

【问题讨论】:

  • 数据框在哪里?实际调用dropna 的代码在哪里。请创建一个minimal reproducible example
  • 对不起!粘贴错误的代码行只是注意到
  • df.dropna(subset=['Step Age', 'Process Age'], inplace = True)
  • 您是否不小心将结果分配回:df = df.dropna(inplace=True)?就地操作将返回 None。
  • 这不仅仅是不必要的,而是问题所在。您可以通过df = df.dropna(inplace=False)df.dropna(inplace=True) 修改df。 (inplace=False 是默认值,所以只需执行 df = df.dropna() 就足够了,尽管我把它留在那里是为了明确)

标签: pandas sorting dataframe nonetype


【解决方案1】:

数据框不能成为 NoneType 对象。相反,各种操作可能会清空数据框。在问题中,数据框已被释放。

import pandas as pd
import csv
from pandas.compat import StringIO

print(pd.__version__)

csvdata = StringIO("""Step Age,Process Age,Extra Col
,1,
1,,
,,""")

df = pd.read_csv(csvdata, sep=",")
df.dropna(subset=['Step Age', 'Process Age'], inplace = True)
print(df)
print(df.empty)

生产

0.24.2
Empty DataFrame
Columns: [Step Age, Process Age, Extra Col]
Index: []
True

【讨论】:

    猜你喜欢
    • 2016-04-27
    • 1970-01-01
    • 2012-03-08
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多