You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过pandas DataFrame的单元格值定位其对应的所属行?

解决方法

前置说明

你当前DataFrame索引为2的列数据为逗号作为小数分隔符的字符串格式,直接调用max()方法得到的是字符串字典序排序的结果,并非数值大小的最大值,需要先将该列转换为浮点型数值再做计算。

核心实现代码

替换你原有代码中求最大值的部分即可:

# 将第2列转为浮点型
df[2] = df[2].astype(str).str.replace(',', '.').astype(float)
# 取第2列的数值最大值
max_value = df[2].max()
# 筛选所有值等于最大值的行
max_value_rows = df[df[2] == max_value]
# 若只需取第一个出现最大值的行,可直接用idxmax()
first_max_row_index = df[2].idxmax()
first_max_row = df.loc[first_max_row_index]

# 打印结果验证
print(f"第2列数值最大值为:{max_value}")
print("所有匹配最大值的行:")
print(max_value_rows)
print("第一个最大值对应的行数据:")
print(first_max_row)

完整修改后的函数代码

elif Nov == str(15):
    def b():
        from openpyxl import load_workbook
        import pandas as pd
        wb = load_workbook(filename='Wind.xlsx', 
                         read_only=True)
        ws = wb['Sheet1']
        data_rows = []
        for row in ws['34':'81']:
            data_cols = []
            for cell in row:
                data_cols.append(cell.value)
            data_rows.append(data_cols)
        df = pd.DataFrame(data_rows)
        # 转换列格式+找最大值对应行
        df[2] = df[2].astype(str).str.replace(',', '.').astype(float)
        max_val = df[2].max()
        max_rows = df[df[2] == max_val]
        print(f"第2列最大值:{max_val}")
        print("最大值对应行数据:")
        print(max_rows)
        print(df)
    b()

结果验证

以你提供的示例数据为例,转换后第2列最大值为3.4,对应的行索引为31,行数据为15.11.2021 08:00 131 3.4,和实际数据一致。

内容的提问来源于stack exchange,提问作者Frederik N. Pedersen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:45:07