Производительность, вот в чем проблема с циклами и Python. Я предлагаю вам изменить свой метод. У вас есть два входных кадра данных: -table (col1 col2) -table1 (col1_1 col2_1)
Вы хотите вычесть col1 с col1_1, col2 с col2_1 и сравнить значения с порогом d и добавить 4 столбца внутри выходной фрейм данных.
Вот метод без зацикливания, и панды
import pandas as pd
table = pd.DataFrame(data= {'col1': [1, 2,3,4,5], 'col2': [6,7,8,9,10]})
table1 = pd.DataFrame(data= {'col1_1': [0.5, 0.2,0.3,0.9,0.9], 'col2_1': [5.1,5.2,4.5,5.4,8.5]})
print(table)
print(table1)
col1 col2
0 1 6
1 2 7
2 3 8
3 4 9
4 5 10
col1_1 col2_1
0 0.5 5.1
1 0.2 5.2
2 0.3 4.5
3 0.9 5.4
4 0.9 8.5
## 1. Join the 2 tables
join = table.join(table1)
print(join)
col1 col2 col1_1 col2_1
0 1 6 0.5 5.1
1 2 7 0.2 5.2
2 3 8 0.3 4.5
3 4 9 0.9 5.4
4 5 10 0.9 8.5
## 2. create a new columns with substraction
join["del1"] = abs(join['col1'] - join['col1_1'])
join["del2"] = abs(join['col2'] - join['col2_1'])
print(join)
col1 col2 col1_1 col2_1 del1 del2
0 1 6 0.5 5.1 0.5 0.9
1 2 7 0.2 5.2 1.8 1.8
2 3 8 0.3 4.5 2.7 3.5
3 4 9 0.9 5.4 3.1 3.6
4 5 10 0.9 8.5 4.1 1.5
## 3. filter with threshold
d = 2
final_df = join[(join.del1 < d) & (join.del2 <d)]
print(final_df)
col1 col2 col1_1 col2_1 del1 del2
0 1 6 0.5 5.1 0.5 0.9
1 2 7 0.2 5.2 1.8 1.8
Более легкая опция может состоять в том, чтобы использовать поставщика атрибута вместо этого:
[AttributeProvider(typeof(IListSource))]
Вы могли попытаться использовать полностью определенное имя блока? и определение редактора?
[TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
[Editor("System.Windows.Forms.Design.DataSourceListEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
На самом деле можно сократить это для версии только путем определения блока:
[TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design")]
[Editor("System.Windows.Forms.Design.DataSourceListEditor, System.Design", typeof(UITypeEditor))]