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列中的值检查列表中的值,并相应地设置不同的列值?如果您使用任意变量和值,我的数据帧就无关紧要了。不,我不能。我必须复制才能回答。并不是说我不想,但熊猫是相当敏感的,我真的必须测试我的代码。。。