在根据最大列值理解行的同时查找具有最高值的行的列名

Posted

技术标签:

【中文标题】在根据最大列值理解行的同时查找具有最高值的行的列名【英文标题】:Finding the column name of row which has highest value while comprehending the row based on max column value 【发布时间】:2020-06-09 22:21:06 【问题描述】:

我对 Python 还是很陌生。我试图为以下数据集定义一个函数。 Sample data

我首先在cell 3 中寻找最大值。根据这个最大值,我正在检查数据的最后 8 列中给出的哪一列具有最高值。

例如,根据给定的数据,cell 3 is 1470758 中的最大值。现在我正在检查从列cell 9cell 16 的哪些列相对于该最大值具有最高值。在这个示例数据的情况下,答案应该是单元格 10,值为 7201。所以输出应该是单元格 10。

这是我的代码:

def winner(filename):
    data=pd.read_csv(filename, sep=',')
    maxC=data.npop.max()
    while data.loc[data['npop']]==maxC:
        data3=data.iloc[:,-8:].max()
#missing code
winner("demo.csv")

请帮忙。我不明白我应该在缺少的代码部分写什么。

【问题讨论】:

以文本而不是图像的形式提供数据,因此其他人可以轻松复制它 编辑了数据链接。 请检查答案,如果它有效或者您发现任何问题,请告诉我。 是的,它可以工作..但是你能告诉我我的做法是否错误......还是太原始了。 我不确定我是否理解您在那里所做的事情。 npop 是什么? 【参考方案1】:

用 cmets 逐行解释代码。

试试这个:

def winner(filename):
    df=pd.read_csv(filename, sep=',')  # Read the csv into dataframe.
    column_names = list(df.columns.values) # Get list of column names

    max_col3_index = df['col3'].idmax()  # this will return the index of max value in `col3` column.

    row_data = df.loc[max_col3_index, column_names[-8:]]  # get series of data present in last 8 columns at above index.

    final_column_name = row_data.idxmax()  # Get the name of column having max value in above series.

    print(final_column_name)

【讨论】:

以上是关于在根据最大列值理解行的同时查找具有最高值的行的列名的主要内容,如果未能解决你的问题,请参考以下文章

连接具有相同值的行的列值(不同列的)

计算 Pandas 中具有相同列值的行的平均值

计算具有3个列值的行的出现次数相同的MySQL

如何在不使用集合运算符的情况下在 oracle 中查找不匹配的行并加入 & 还查询特定行的不匹配列名

当我们在 plsql 中动态传递列名的值和相应的列值时获取整行的存储过程

选择具有最大值的行的 ID