【问题标题】:Pandas: add new column with count how often the highest score of a day was reached by this person熊猫:添加新列,计算此人达到一天最高分的频率
【发布时间】:2021-02-06 10:32:25
【问题描述】:

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

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)

输出

      day1 day2 day3 day4 day5
larry    1    4    7    3    5
niko     2   -1    3    6    4
tin    nan    5    5    6    7

预期结果是(larry:1 次,niko:2 次,tin:3 次)

      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。

【问题讨论】:

    标签: python pandas dataframe numpy


    【解决方案1】:

    使用pandas.DataFrame.stackcount 的一种方式:

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

    输出:

           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
    

    【讨论】:

    • @LarryCai - 你是否像评论中那样转换为浮动
    • 不,但可以作为答案。 @Chris 可以更新它。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多