我有一个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
。谢谢。
答案 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