У меня есть DataFrame (1000,1000)
, у которого есть Multi-Index в строках label_y1, label_y2
и столбцах label_x1, label_x2
.Я хочу перебрать все строки и столбцы, и установить все на ноль, кроме тех случаев, когда выбранные строка и столбец соответствуют .В идеале это работает для одного столбца и строки - оба с Multi-Index -, но это может также работать для более чем одного столбца и строки.
DataFrame выглядит следующим образом:
local или
label_columns1 = ['testing','done']
label_columns2 = ['A', 'B']
label_rows1 = ['testing','done']
label_rows2 = ['A', 'B']
local = pd.DataFrame([[1,2,3,4]], index=pd.MultiIndex.from_product([label_rows1,label_rows2]), columns=pd.MultiIndex.from_product([label_columns1, label_columns2 ]))
print(local)
testing done
A B A B
row1 A 1 2 3 4
B 1 2 3 4
row2 A 1 2 3 4
B 1 2 3 4
В случае столбцов я решил проблему с помощью следующего кода:
for col in local.columns:
if col != ('done', 'A'):
local[col].values[:] = 0
Это дает:
print(local)
testing done
A B A B
row1 A 0 0 3 0
B 0 0 3 0
row2 A 0 0 3 0
B 0 0 3 0
Я делаю это аналогично для строк.Я также пробовал с local.iterrrows()
и loc
строками, но это не работает.Есть идеи, как мне это сделать?Что мне нужно, это:
print (local)
testing done
A B A B
row1 A 0 0 0 0
B 0 0 0 0
row2 A 0 0 3 0
B 0 0 0 0