То, как я интерпретирую ваш вопрос, состоит в том, чтобы заполнить ВСЕ строки DataFrame, которые соответствуют, например, 0
, [0, 0, 0, 0], что в вашем случае - только одна строка, но для 1
на самом деле две строки, которые должны быть заменены.
Я перешел на использование букв вместо цифр, чтобы было легче видеть:
# Initialize DataFrame with zeros:
Y = pd.DataFrame(np.zeros((5,4), dtype=int), index=list('bdeab'))
Сейчас:
print(Y)
дает:
0 1 2 3
b 0 0 0 0
d 0 0 0 0
e 0 0 0 0
a 0 0 0 0
b 0 0 0 0
Если мы теперь сделаем:
mapping = {
'a': [0, 0, 0, 0],
'b': [1, 0, 0, 0],
'c': [1, 1, 0, 0],
'd': [1, 1, 1, 0],
'e': [1, 1, 1, 1]
}
for row in pd.unique(Y.index):
Y.loc[row, :] = mapping[row]
Получим желаемый фрейм данных:
0 1 2 3
b 1 0 0 0
d 1 1 1 0
e 1 1 1 1
a 0 0 0 0
b 1 0 0 0