如何取出每行包含最大值的矩阵行?

时间:2019-01-22 21:46:33

标签: python pandas numpy dataframe

我有一个包含3列的数据矩阵:x,y,z:每行都有很多行。

我需要找到每个列中每次包含最大值的行,并为最小值找到相同的行,然后将所有这些行写入数据框。

让我说:

x= [1,2,4,3] , y= [7,8,6,5] , z= [12,10,11,9]

找到我做的对应行:

alldata=[];

alldata.append([x]);

alldata.append([y]);

alldata.append([z]);

for elem in alldata:
    xarr=np.array(elem)
    rowmax=xarr.argmax()
    ind= alldata.index(elem)
    maxcorr.append(alldata[ind][0][rowmax])

for elem in alldata:
    xarr=np.array(elem)
    rowmin=xarr.argmin()
    ind= alldata.index(elem)
    maxcorr.append(alldata[ind][0][rowmin])

问题是,当我需要编写对应的行时:

xmax,y,z,x2,ymax,z2,x3,y3,zmax,xmin,y4,z4,.....

我尝试写相应的行:

x=np.transpose(x);

y=np.transpose(y);

z=np.transpose(z);

mydata=[]
mydata.append(x)
mydata.append(y)
mydata.append(z)

mydata=np.array(mydata)

要在我拥有的数据帧上写:

casename=['Xmax', 'Y', 'Z', ,'Xmin', 'Y', 'Z', 'X', 'Ymax', 'Z', 'X', 'Ymin', 'Z', 'X', 'Y', 'Zmax','X', 'Y', 'Zmin']
mydata=np.array(mydata).reshape(-1, len(casename))
df = pd.DataFrame(mydata, index=Filenames, columns=casename)

很明显,mydata是我要搜索的形式,它没有在代码中列出,是我的问题。不可能从mydata中取出相应的行

例如,根据示例,我想要的输出是:

[4,5,11,1,7,12,2,8,10,3,5,9,1,7,12,3,5,9]

还有一件事:文件名不应更改,因为我有几个文件包含这些X,Y,Z数据

1 个答案:

答案 0 :(得分:1)

我正在使用pandas解决此问题,因为您用相同的问题标记了该问题。另外,我无法匹配您提供的输出。我希望这是一个错字。但是我已经按照您的描述进行了介绍,即xmax,y,z,x2,ymax,z2,x3,y3,zmax,xmin,y4,z4,.....

df = pd.DataFrame(list(zip(x, y, z)), columns=['x', 'y', 'z'])
mylist = []
for i in df.columns:
    mylist+=(list(df.loc[df[i].argmax()]))
for i in df.columns:
    mylist+=(list(df.loc[df[i].argmin()]))
Out: [4, 6, 11, 2, 8, 10, 1, 7, 12, 1, 7, 12, 3, 5, 9, 3, 5, 9]