首页 > 解决方案 > 如何查找 numpy 数组的索引并在列表中打印相应的行

问题描述

我有一个 pandas 数据框,想根据该数据框的一列打印一个列表的元素。这是我的数据框:

data={'names':['Fa_1', 'Fa_2', 'Lay'], 'order':[1,2,3], 'Rel':['Fault', 'Fault', 'Ero']}
df = pd.DataFrame(data)

这是我的列表,其中包含一些数组:

ver=[[np.array([[1., 2., 3.]]), np.array([[2., 4., 6.]])],\
     [np.array([[2., 2., 2.]]), np.array([[5., 1., 4.]])],\
     [np.array([[3., 1., 6.]]), np.array([[8., 0., 2.]])],\
     [np.array([[6., 1., 2.]]), np.array([[1., 3., 1.]])]]

df有三行,但我ver有四行(列表),这对我来说是个问题。当最后一列dfFault时,我想打印max存储在相同列表编号中的数组的ver。如果是别的,我想要min. 重要的一点是,在我的rel列中df,我有两个Faults 和一个Ero,但我有四个列表存储在ver. 每个Fault都有自己的列表(中的第一个和第二个列表ver),但Ero接下来有最后两个列表。目前我的代码工作正常或列表,FaultEro它只显示min一行:

for rows in range (len(df)):
    if df.iloc[rows, -1]=='Fault':
        for lists in ver[rows]:
            print (np.max(lists))
    else:
        for lists in ver[rows]:
            print (np.min(lists))

此代码忽略打印min存储在ver. 我非常感谢您提前提供的任何帮助。

标签: pythonpandaslistnumpy

解决方案


正确的代码只是按行替换 i :

for rows in range (len(df)):
if df.iloc[rows, -1]=='Fault':
    for lists in ver[rows]:
        print ("max",np.max(lists))
else:
    for lists in ver[rows]:
        print ("min",np.min(lists))

推荐阅读