返回一个项目系列作为熊猫中的元组

时间:2019-10-16 18:26:59

标签: python pandas

在给定输入集的情况下,我有一个数据框,该数据框仅从操作中返回一项,因此我需要将该项作为单个元组转储。这是df(下面生成的代码):

df
              animal  number
location
zoo1           lions      10
zoo1       antelopes      20
zoo2      orangutans     500
zoo1          zebras      30

我想做的是找到动物数量绝对最高的位置,并将其输出为('zoo2', 500)

我尝试过的一些方法及其输出是:

df.loc[[df['number'].idxmax()], 'number']
location
zoo2    500
tuple(df.loc[[df['number'].idxmax()], 'number'])
(500,)

我发现问题的一部分是位置是索引,因此我尝试将其重置。这可能会让我靠近,但是我不确定如何从这里进一步分解:

df.loc[[df['number'].idxmax()], 'number'].reset_index()
  location  number
0     zoo2     500

这也很接近,但是它仍然不是我所需要的,并且对于我要完成的工作来说似乎也不必要(我也尝试在最后用[0]对其进行索引,但是它没有不会更改输出):

list(zip(df.loc[[df['number'].idxmax()], 'number'].items()))
[(('zoo2', 500),)]

要生成DF:

df = pd.DataFrame({'animal': ['lions', 'antelopes', 'orangutans','zebras'],
                   'location': ['zoo1', 'zoo1', 'zoo2', 'zoo1'],
                       'number': [10, 20, 500, 30]})
df = df.set_index('location')

1 个答案:

答案 0 :(得分:0)

您快到了!以下内容将为您提供所需的内容:

tuple(df.loc[[df['number'].idxmax()], 'number'].reset_index().values[0])

或者,如果您想使用数组:

arr = df.reset_index().values
tuple(arr[arr.argmax(axis=0)[2], [0, 2]])

p.s。 df创建代码中有一个错字,在'之前的Missiong orangutans