【问题标题】:Pandas DataFrame TypeError must be str not int on calling mean for dType objectPandas DataFrame TypeError 在调用 dType 对象的平均值时必须是 str 而不是 int
【发布时间】:2019-12-09 01:55:56
【问题描述】:

我正在使用 Pandas 和 python(3) 处理数据集,我需要在其中删除空值,因此我尝试采用该特定列的平均值来填充空值,但出现以下错误:

TypeError: 必须是 str,而不是 int

当我在 DataFrame 上调用 .info() 时,我得到它的数据类型对象为:

object

如果您想了解更多信息,这里是数据集的链接: https://www.kaggle.com/orgesleka/imdbmovies

那么,我如何获得数据框列中 objectfloat64 类型值的平均值?

提前致谢!

【问题讨论】:

  • 向我们展示一些示例数据?也对象意味着你的列是混合类型的字符串,如
  • 还有哪些列引发了问题
  • 我已经添加了数据集的链接。
  • 您在哪一列使用fillna?
  • 这里是空值的列:wordsintitleimdbratingratingcountdurationyear,但我认为它保留在第一列。

标签: python python-3.x pandas data-science mean


【解决方案1】:

您可以在列上使用内置的.fillna() 方法。

所以你可能会做这样的事情......

df['column_of_interest'] = pd.to_numeric(df['column_of_interest'])
my_mean = df['column_of_interest'].dropna().mean()

df['column_of_interest'].fillna(my_mean)

您可能需要设置inplace=True,否则,如果df['column_of_interest'] = df['column_of_interest'].fillna(my_mean) 不能自动将NaN 填充到位,请使用。

【讨论】:

  • 它返回:ValueError: could not convert string to float:
  • 您希望该列是数字吗?如果是这样,可能是其中的某些值是字符串而不是浮点数,在这种情况下,您可以先尝试df['column_of_interest'] = pd.to_numeric(df['column_of_interest']),然后再尝试上面的代码。
【解决方案2】:

好像在导入 csv 文件时,示例数据使用特定值作为 null

快速修复

df=pd.read_csv('your.csv',na_values = [ '#N/A', 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null'])

另一个修复

for x in ['wordsintitle', 'imdbrating', 'ratingcount', 'duration', 'year']: 
    df[x]=pd.to_numeric(df[x],errors='coerce')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2019-08-04
    • 2017-12-08
    • 1970-01-01
    • 2018-04-26
    • 2019-04-23
    • 1970-01-01
    相关资源
    最近更新 更多