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
这样应该可以了 |