在给定输入集的情况下,我有一个数据框,该数据框仅从操作中返回一项,因此我需要将该项作为单个元组转储。这是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')
答案 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