#python
Вопрос:
существует два фрейма данных
import pandas as pd import numpy as np df = pd.DataFrame(np.array([[0,1,0,0,1], [1,0,0,1,0], [0,1,1,0,0]])) df 0 1 2 3 4 0 0 1 0 0 1 1 1 0 0 1 0 2 0 1 1 0 0 ddff = pd.DataFrame(np.array([[3,2,1], [4,2,3], [3,1,4], [4,1,2], [2,3,1]])) ddff 0 1 2 0 3 2 1 1 4 2 3 2 3 1 4 3 4 1 2 4 2 3 1
Теперь мне нужно изменить значения строки 0 фрейма данных df на основе фрейма данных ddff. строка 0 фрейма данных ddff состоит из значений [3,2,1], теперь, если столбцы 3, 2 и 1 фрейма данных df имеют значение 0, установите его равным 1
ожидаемый результат
0 1 2 3 4 0 0 1 1 1 1 1 1 0 0 1 0 2 0 1 1 0 0
Ответ №1:
Это заменит все элементы в строке 0 df
в столбцах, указанных строкой 0 в ddff
df.iloc[0][ddff.iloc[0].values] = 1 # Out: # 0 1 2 3 4 # 0 0 1 1 1 1 # 1 1 0 0 1 0 # 2 0 1 1 0 0
Пояснение: ddff.iloc[0].values
считывает имена столбцов из строки 0 в ddff
.