Я пытаюсь решить следующую проблему. У меня есть два набора данных, скажем, df1 и df2:
df1
NameSP Val Char1 BVA
0 'ACCR' 0.091941 A Y'
1 'SDRE' 0.001395 S Y'
2 'ACUZ' 0.121183 A N'
3 'SRRE' 0.001512 S N'
4 'FFTR' 0.035609 F N'
5 'STZE' 0.000637 S N'
6 'AHZR' 0.001418 A Y'
7 'DEES' 0.000876 D N'
8 'UURR' 0.023878 U Y'
9 'LLOH' 0.004371 L Y'
10 'IUUT' 0.049102 I N'
df2
NameSP Val1 Glob
0 'ACCR' 0.234 20000
1 'FFTR' 0.222 10000
2 'STZE' 0.001 5000
3 'DEES' 0.006 2000
4 'UURR' 0.134 20000
5 'LLOH' 0.034 10000
Я хотел бы выполнить индексацию df2 в df1, а затем использовать вектор индексации для различных операций матрицы. Это было бы что-то похожее на strmatch (A, B, «точный») в Matlab. Я могу правильно выполнить индексацию, используя .ilo c, а затем .isin, как показано в следующем коде:
import pandas as pd
import numpy as np
df1 = pd.read_excel('C:\PYTHONCODES\LINEAROPT\TEST_DATA1.xlsx')
df2 = pd.read_excel('C:\PYTHONCODES\LINEAROPT\TEST_DATA2.xlsx')
print(df1)
print(df2)
ddf1 = df1.iloc[:,0]
ddf2 = df2.iloc[:,0]
pindex = ddf1[ddf1.isin(ddf2)]
print(pindex.index)
, что дает мне:
Int64Index([0, 4, 5, 7, 8, 9], dtype='int64')
Но я не могу найти способ использовать этот индекс для отображения и построения моих массивов. В качестве примера я хотел бы иметь вектор, который имеет то же количество элементов, что и df1, но со значениями Val1 из df2 в индексированных позициях и нулями повсюду в другом месте. Так должно выглядеть так:
0.234
0
0
0
0.222
0.001
0
0.006
0.134
0.034
0
Или другая проблема с отображением. Как использовать такую индексацию для сопоставления значений из двоеточия «Val» в df1 в векторе, который будет содержать Val из df1 в индексированных строках и нулях везде. Так что на этот раз это должно выглядеть так:
0.091941
0.0
0.0
0.0
0.035609
0.000637
0.0
0.000876
0.023878
0.004371
0.0
Есть идеи, как это сделать эффективно и элегантно?
Спасибо за помощь!