python - 如何查找 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
有四行(列表),这对我来说是个问题。当最后一列df
是Fault
时,我想打印max
存储在相同列表编号中的数组的ver
。如果是别的,我想要min
. 重要的一点是,在我的rel
列中df
,我有两个Fault
s 和一个Ero
,但我有四个列表存储在ver
. 每个Fault
都有自己的列表(中的第一个和第二个列表ver
),但Ero
接下来有最后两个列表。目前我的代码工作正常或列表,Fault
但Ero
它只显示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
. 我非常感谢您提前提供的任何帮助。
解决方案
正确的代码只是按行替换 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))
推荐阅读
- ios - 使用 AVFoundation 将 AAC 音频和 h.264 视频流混合到 mp4
- install4j - Install4j - 是否可以运行 TSQL 查询?
- ios - 如何为 UINavigationBar 的后退按钮创建阴影?
- android - 如何使用 Android Studio 将数据从 Raspberry pi 发送到 Google Cloud IoT Core?
- java - yml 文件中的属性值未加载到 springboot 项目中的类中
- python - 改变形状并随机排列一个数组
- shell - Shell - 用户列的总和
- emacs - Emacs 25.0.50 中的递归加载
- go - Run 的输出耗时过长
- c# - 在图像控件 WPF 中显示 UIelement(Visual) 的渲染图像