我有 DataFramesdfSide0
和dfSide1
不同数量的行但相同的列:
'distoperator' 'Name' 'camera_row'
0 67.3350 'End of Coil' 'a'
1 1331.4001 'Dent' 'b'
2 130.8350 'Oil' 'a'
3 859.2139 'Black Line' 'f'
我想要的是:
dfSide0['distoperator']
和值之间所有可能减法的最小值和绝对值,dfSide1['distoperator']
但仅当条件dfSide0['camera_row'] == dfSide1['camera_row']
为真时。dfSide1['Name']
每个值的值。到目前为止我的代码是:
temp_operator = []
temp_op_defect = []
k = -1
for i in dfSide0['distoperator']:
k = k + 1
j = dfSide0.index[k]
c = min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][j]]))
h = dfSide1.index(min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][j]])))
s = dfSide1['Name'][h]
temp_operator.append(c)
temp_op_defect.append(s)
这给出了以下错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-37-e794dd1800c7> in <module>()
6 j = dfSide0.index[k]
7 c = min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][j]]))
----> 8 h = dfSide1.index(min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][j]])))
9 s = dfSide1['Name'][h]
10 temp_operator.append(c)
TypeError: 'Int64Index' object is not callable
有任何想法吗?预先感谢您的意见。
我在为每个 i 创建的列表上使用了 idxmin() 方法:
temp_operator = []
temp_op_defect = []
k = -1
for i in dfSide0['distoperator']:
k = k + 1
c = min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][k]]))
h = abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][k]]).idxmin()
f = dfSide1['Name'][h]
temp_operator.append(c)
temp_op_defect.append(f)
它似乎工作!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句