【问题标题】:How to count length of missing values for string variables as zero?如何将字符串变量的缺失值长度计为零?
【发布时间】:2020-01-31 11:20:03
【问题描述】:

我正在尝试使用 Python 计算数据框中对象变量的长度。我的很多变量都是带有缺失值的字符串,不幸的是,当我尝试计算缺失值的长度时,它显示为 3(因为它将“Nan”计为 3 个字符的值)。

这是我正在使用的代码:

df_string_mean_with_na = pd.DataFrame(df_string.applymap(len).astype(int).mean().to_dict(), index=[df_string.index.values[0]])

其中 df_string 是我的起始数据框,我正在尝试计算每列值的平均长度。 我想把对象变量的缺失值长度计为0,有没有办法?

【问题讨论】:

  • 在这种情况下 Nan 是一个字符串吗?你可以用空的空间来代替它吗? df.replace('南','')
  • 是的,这行得通!

标签: python pandas numpy count string-length


【解决方案1】:

我认为您需要 DataFrame.fillna 将缺失值替换为空字符串,然后再计算 length

print (Table1)
       A      B    C
0  hello     hi  NaN
1   good     hi   so
2   home  hello   no

测试缺失值:

print (Table1.isna())
       A      B      C
0  False  False   True
1  False  False  False
2  False  False  False

df = Table1.fillna('').applymap(len).mean().to_frame().T
print (df)
          A    B         C
0  4.333333  3.0  2.333333

详情

print (Table1.fillna('').applymap(len))
   A  B  C
0  5  2  0
1  4  2  2
2  4  5  2

如果缺失值为strings,则使用DataFrame.replace

print (Table1.isna())
       A      B      C
0  False  False  False
1  False  False  False
2  False  False  False

df = Table1.replace('NaN', '').applymap(len).mean().to_frame().T
print (df)
          A    B         C
0  4.333333  3.0  2.333333

【讨论】:

  • 谢谢jezreal,这比我预期的要容易。您知道为什么某些变量的 NaT 值不会被读取为缺失值吗?
  • @inegue - 我认为问题是如果将strftime 与日期时间一起使用,那么日期时间将转换为字符串,这是预期的,不幸的是NaT(日期时间的缺失值)不会更改为@987654333 @,但字符串'NaT'(可能是错误,不确定)
猜你喜欢
  • 2015-09-14
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2015-06-13
  • 1970-01-01
  • 2014-10-06
  • 2011-07-20
相关资源
最近更新 更多