找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3164|回复: 1

[求助] 关于pandas求最小值和其位置的问题,求大侠帮忙

2

主题

4

帖子

4

积分

贫民

积分
4
putu 发表于 2022-11-10 11:16:13 | 显示全部楼层 |阅读模式
data =[[55,607,66,87,1,432,66,87,1,3],[66,567,67,66,87,666,7,66,87,1],[6,67,696,66,87,1,87,57,67,66]]
df = pd.DataFrame(data=data,columns=["a",'B','cc','tr','B','cc','tr','tr','B','cc'])

我想再次从max_idx标注的列数右边开始的位置求最小值和最小值的位置,我用下面代码,出现错误,求大师帮忙

df_oringi_lng =df.shape[1]
df['max_idx'] = df.iloc[:,:df_oringi_lng].idxmax(axis=1)
df['max_val'] = df.iloc[:,:df_oringi_lng].max(axis=1)

row = 0
for v in df['max_idx']:        
    if (v <= df_oringi_lng - 2):     
        df_min = float(df.iloc[row:row+1,v+1:df_oringi_lng].min(axis=1))  #从v+1开始向右边取值,并去除最右边2列(max_val,max_idx),创建新的数据帧
        df_idxmin = int(df.iloc[row:row+1,v+1:df_oringi_lng].idxmin(axis=1))
        row = row + 1

不知道为什么运行会出现 错误,或这方法根本就不行,请大师帮忙改改,谢谢

回复

使用道具 举报

0

主题

14

帖子

14

积分

贫民

积分
14
wjb986555360 发表于 2022-12-18 19:42:53 | 显示全部楼层
import pandas as pd
data =[[55,607,66,87,1,432,607,87,1,3],[66,567,67,66,87,666,7,66,87,1],[6,67,696,66,87,1,87,57,67,66]]
df = pd.DataFrame(data=data,columns=["a",'B','cc','tr','B','cc','tr','tr','B','cc'])
columns_list=df.columns
index_list=df.index
df_oringi_lng =df.shape[1]
df['max_idx'] = df.idxmax(axis=1)
df['max_val'] = df.max(axis=1)

row = 0
for v in df['max_idx']:
    for i,column_name in enumerate(columns_list):
        if df.iloc[row,i]==df.loc[row,'max_val']:
            break
    if i<df_oringi_lng-2:
        df_min = float(pd.DataFrame(df.iloc[:,i+1:df_oringi_lng]).min(axis=1)[row])  #从v+1开始向右边取值,并去除最右边2列(max_val,max_idx),创建新的数据帧
        df_idxmin = pd.DataFrame(df.iloc[:,i+1:df_oringi_lng]).idxmin(axis=1)[row]

        row = row + 1

这样应该可以了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表