Python 如何从get Max per row of 4列迭代5行,并相应地设置不同列的值

Python 如何从get Max per row of 4列迭代5行,并相应地设置不同列的值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个DataFrame,我从df1中创建了一个包含4列的子集df2,并创建了一个包含每行最大值的5个项目的列表。现在,根据该行的最大值在哪一列(即第1、2、3、4列),确定df1中标签列中的int标签(即第1、2、3或4列) df2是因为不包括这4个列的其他一些列的值比要比较的4个列的值要高,并且显然会将其拧紧。开始认为它应该是一个列表或系列 代码 df1= pd.DataFrame({'x_1': [xvalues[0][0], xvalues[0][1], xvalues[0][2],

我有一个
DataFrame
,我从df1中创建了一个包含4列的子集df2,并创建了一个包含每行最大值的5个项目的列表。现在,根据该行的最大值在哪一列(即第1、2、3、4列),确定df1中标签列中的int标签(即第1、2、3或4列)

df2是因为不包括这4个列的其他一些列的值比要比较的4个列的值要高,并且显然会将其拧紧。开始认为它应该是一个列表或系列

代码

df1= pd.DataFrame({'x_1': [xvalues[0][0], xvalues[0][1], xvalues[0][2], 
                          xvalues[0][3], xvalues[0][4]], 
                  'x_2': [yvalues[0][0], yvalues[0][1], yvalues[0][2], 
                          yvalues[0][3], yvalues[0][4]],
                  'True labels': [truelabels[0], truelabels[1], 
                               truelabels[2],truelabels[3], truelabels[4]],
                  'g11': [classifier1[0][0],classifier1[0][1],
                          classifier1[0][2],classifier1[0][3],
                          classifier1[0][4],],
                  'g12': [classifier1[1][0],classifier1[1][1],
                          classifier1[1][2],classifier1[1][3],
                          classifier1[1][4],],
                  'g13': [classifier1[2][0],classifier1[2][1],
                          classifier1[2][2],classifier1[2][3],
                          classifier1[2][4],],
                  'g14': [classifier1[3][0],classifier1[3][1],
                          classifier1[3][2],classifier1[3][3],
                          classifier1[3][4],],
                  'L1': [2, 5, 6, 7, 8],
                  'g21': [classifier2[0][0],classifier2[0][1],
                          classifier2[0][2],classifier2[0][3],
                          classifier2[0][4],],
                  'g22': [classifier2[1][0],classifier2[1][1],
                          classifier2[1][2],classifier2[1][3],
                          classifier2[1][4],],
                  'g23': [classifier2[2][0],classifier2[2][1],
                          classifier2[2][2],classifier2[2][3],
                          classifier2[2][4],],
                  'g24': [classifier2[3][0],classifier2[3][1],
                          classifier2[3][2],classifier2[3][3],
                          classifier2[3][4],],
                  'L2': [0, 0, 0, 0, 0],
                  'g31': [classifier3[0],classifier3[0],
                          classifier3[0],classifier3[0],
                          classifier3[0],],
                  'g32': [classifier3[1][0],classifier3[1][1],
                          classifier3[1][2],classifier3[1][3],
                          classifier3[1][4],],
                  'g33': [classifier3[2][0],classifier3[2][1],
                          classifier3[2][2],classifier3[2][3],
                          classifier3[2][4],],
                  'g34': [classifier3[3][0],classifier3[3][1],
                          classifier3[3][2],classifier3[3][3],
                          classifier3[3][4],],
                  'L3': [0, 0, 0, 0, 0],
                  'Assigned L':[1, 1, 1, 1,1]}, index =['Datapoint1', 'D2', 'D3', 
                                                        'D4', 'D5'])



df2= df1[['g11','g12','g13','g14']]
hdf = df2.max(axis = 1)

g11 = df1['g11'].to_list()
g12 = df1['g12'].to_list()
g13 = df1['g13'].to_list()
g14 = df1['g14'].to_list()



for item, label in zip(hdf, table['L1']):
    if hdf[item] in g11:
        df1['L1'][label] = labels[0]
        print(item, label)
    elif hdf[item] in g12:
        df1['L1'][label] = labels[1]
        print(item, label)
    elif hdf[item] in g13:
        df1['L1'][label] = labels[2]
        print(item, label)
    elif hdf[item] in g14:
        df1['L1'][label] = labels[3]
        print(item, label)
我试过使用
.loc
.at
,但当它不起作用时,我就放弃了它,尝试了其他方法,也许这些方法会更好?到目前为止我就在这里

错误来自hdf的for循环, 我遇到的问题是,
“无法使用”


我不认为数据框中的其他值是相关的,它就在那里,所以人们知道我已经制作了一个。数据框中的5个相关列是g11、g12、g13、g14和L1。

此代码可能包含大部分相关信息,但由于它依赖于未知数据(
xvalues
等),因此我们无法运行它来重现问题。既然你没有说是哪条线导致了这个错误,我也无能为力…@SergeBallesta原谅我Serge但是xvalues不相关,是吗?最底层是问题所在。检查值列表以查看其中的4列。xvalues和yvalues都不在要检查的列中,它们只是数据帧中的其他值。我从来没有说过这是相关的。我只是说,没有样本数据,我无法重现错误。作为一个粗略的猜测,
df1['L1'][label]=…
可能是个问题,因为通常的方法是
df1[label,'L1']=…
@Serge Bellesta:那么,你能给我举个例子吗,这个代码可以根据数据帧的4列中的值检查列表中的值,并相应地设置不同的列值?如果您使用任意变量和值,我的数据帧就无关紧要了。不,我不能。我必须复制才能回答。并不是说我不想,但熊猫是相当敏感的,我真的必须测试我的代码。。。