【问题标题】:Pandas .min() skipna option not working for mixed string and NaN SeriesPandas .min() skipna 选项不适用于混合字符串和 NaN 系列
【发布时间】:2018-11-21 02:55:08
【问题描述】:

我有一个熊猫系列,基本上是字符串和np.nan 的混合体。我的目标是使用min()max(),不包括所有NaN。最好的方法是什么?

例如,使用 Pandas 内置的 .min() 不起作用:

(Pdb) x
0         NaN
1    20180101
2    20170101
Name: DATE, dtype: object

(Pdb) x.min()
*** TypeError: unorderable types: float() <= str()

(Pdb) x.min(skipna=True)
*** TypeError: unorderable types: float() <= str()

在上述情况下,我想返回 20170101。谢谢。

【问题讨论】:

  • 计算时去掉空值:s[s.notnull()].min()
  • s.dropna().min() 也。

标签: string pandas max nan min


【解决方案1】:

看起来你有约会。第三种选择是使用您有日期的事实:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'col1': [np.nan, '20180101','20170101']
})

m = pd.to_datetime(df['col1']).min().date()
print(m)

结果:

2017-01-01

【讨论】:

    【解决方案2】:

    使用dropna 或布尔索引删除NaN,然后​​使用min

    s.dropna().min()
    

    或者正如@ALollz 在 cmets 中指出的那样

    s[s.notnull()].min()
    

    输出:

    '20170101'
    

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 2016-10-26
      • 2020-04-16
      • 2018-10-31
      • 2012-10-08
      • 2017-12-16
      • 2018-06-28
      • 2013-12-31
      • 1970-01-01
      相关资源
      最近更新 更多