Я знаю, что W-B уже очень элегантно ответил на это.
Однако, поскольку я потратил время на решение этой проблемы менее профессионально, позвольте мне также опубликовать свое решение.
От:
Я ищу способ вычислить следующее: через индекс df I
можно посмотреть в столбце A2 df2 значение B2, которое следует добавить
до дф.
Я понял, что должен сделать:
- получить форму списка индексов df. Итак, А, Б, С ...
- посмотрите значения в df2 ['B2'] в том же индексе, что и df2 ['A2'] для каждого элемента индекса df
- создайте новый столбец ['B2'] в df, куда мы копируем эти значения из df2 ['B2'], соответствующие индексу из df, к элементам в df2 ['A2']
Это мой код:
import pandas as pd
d = {'A': [1, 1, 0, 1, 0, 1, 0],
'B': [0, 0, 0, 0, 0, 1, 1]
}
df = pd.DataFrame(data=d, index=["A", "B", "C", "D", "E", "F", "G"])
print(df)
d = {'A2': ["D", "A", "A", "B", "C", "C", "E", "X", "F", "G"],
'B2': ["DD", "AA", "AA", "BB", "CC", "CC", "EE", "XX", "FF", "GG"],
'C3': [1, 1, 11, 35, 53, 2, 76, 45, 5, 34]}
df2 = pd.DataFrame(data=d)
print(df2)
llista=[]
for i in df.index:
m=df2['A2'].loc[df2['A2']==i].index
if m[0]:
print m[0],i
llista.append(df2['B2'].iloc[m[0]])
else:
llista.append([])
df['B2'] = llista
Вывод:
A B B2
A 1 0 AA
B 1 0 BB
C 0 0 CC
D 1 0 []
E 0 0 EE
F 1 1 FF
G 0 1 GG
Как видите, отличается от принятого поста. Это потому, что в df2 нет индекса 'D' ['A2']