Pandas .min()skipna选项不适用于混合字符串和NaN系列

时间:2018-06-11 19:31:02

标签: string pandas max nan min

我有一个Pandas系列,基本上是字符串和np.nan的混合。我的目标是取min()max()排除所有NaN。最好的方法是什么?

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

(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。谢谢。

2 个答案:

答案 0 :(得分:3)

Use dropna or boolean indexing to remove NaN then use min:

s.dropna().min()

or as @ALollz points out in comments

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

Output:

'20170101'

答案 1 :(得分:2)

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

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