首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫:新增一栏,并统计一下这个人每天达到最高得分的频率。

熊猫:新增一栏,并统计一下这个人每天达到最高得分的频率。
EN

Stack Overflow用户
提问于 2021-02-06 10:32:25
回答 1查看 81关注 0票数 5

它是熊猫/Dataframe,它包含了每个人每天的所有分数,我想增加一个专栏来收集它有多少次得分最高(可能不止一个人,一些数据是nan)。

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

data = np.array([['','day1','day2','day3','day4','day5'],
                ['larry',1,4,7,3,5],
                ['niko',2,-1,3,6,4],
                ['tin',np.nan,5,5, 6,7]])
                
df = pd.DataFrame(data=data[1:,1:],
                  index=data[1:,0],
                  columns=data[0,1:])
print(df)

输出

代码语言:javascript
运行
复制
      day1 day2 day3 day4 day5
larry    1    4    7    3    5
niko     2   -1    3    6    4
tin    nan    5    5    6    7

预期结果是(拉里:1次,尼科:2次,锡:3次)

代码语言:javascript
运行
复制
      times_of_top day1 day2 day3 day4 day5
larry            1    1    4    7    3    5
niko             2    2   -1    3    6    4
tin              3  nan    5    5    6    7

nikoday1day4上得分最高,所以他的times_of_top是2。

tinday2day4day5上得分最高,所以他的times_of_top是3分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-06 10:43:12

使用pandas.DataFrame.stackcount的一种方法

代码语言:javascript
运行
复制
# df = df.astype(float)
# Since the sample data are in object type

df["times_of_top"] = df[df == df.max()].stack().count(0)
print(df)

输出:

代码语言:javascript
运行
复制
       day1  day2  day3  day4  day5  times_of_top
larry   1.0   4.0   7.0   3.0   5.0             1
niko    2.0  -1.0   3.0   6.0   4.0             2
tin     NaN   5.0   5.0   6.0   7.0             3
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66075873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档