当dtype为dtype('O')时,pandas Serie idxmax()失败

时间:2018-04-10 17:08:01

标签: python python-3.x pandas

我认为使用最新版本的更改会导致对idxmax()的调用失败,在此情况下它曾经工作过。我并不是说这是一个回归,我试图理解原因和正确的发号召唤。

type(sss)
<class 'pandas.core.series.Series'>
sss.dtype
dtype('O')
type(sss.index)
<class 'pandas.core.indexes.base.Index'>
sss.index=Index([...strings.., dtype'object', length=112)

系列中的单列具有许多NaN的数字类型和一些有效数字。 所有索引都是字符串。 我正在搜索列的最大值索引。

我怎样才能获得?

2 个答案:

答案 0 :(得分:1)

我无法复制大熊猫0.19.2。您可以转换为float,然后使用pd.Series.idxmax

df = pd.DataFrame({'A': [0, 1.5, 1.0, np.nan, np.nan, 54, 19, np.nan]}, dtype=object,
                  index=list('abcdefgh'))

res = df['A'].astype(float).idxmax()  # 'f'

答案 1 :(得分:0)

选项一

s.index[np.argmax(s.tolist())]

选项二

max(s.index, key=s.get)

数字演示

s = pd.Series([0, 8, 4, 3], list('WXYZ'), object)

s

W    0
X    8
Y    4
Z    3
dtype: object
s.index[np.argmax(s.tolist())]

'X'
max(s.index, key=s.get)

'X'

String Demo

s = pd.Series(list('5Z4A'), list('ABCD'), object)

s

A    5
B    Z
C    4
D    A
dtype: object
s.index[np.argmax(s.tolist())]

'B'
max(s.index, key=s.get)

'B'