在pandas中将oneitem系列作为元组返回

2024-09-30 14:26:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,给定我的输入集,它只从一个操作返回一个项,我需要将该项作为一个元组转储。以下是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')

Tags: 数据numberdfindexlocationloc元组animal
1条回答
网友
1楼 · 发布于 2024-09-30 14:26:39

你快到了!以下内容将满足您的需求:

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]])

另外,您的df创建代码中有一个输入错误,missing'orangutans之前

相关问题 更多 >