Допустим, у меня есть следующий мультииндексированный фрейм данных, сгенерированный с помощью следующего кода:
import pandas as pd, numpy as np
names = ['Name1','Name2','Name3','Name4']
values = ['x1','x2','x3','x4']
categories = ['y1','y2','y3']
x1 = pd.Series([0, 0, 0], index=categories)
index = pd.MultiIndex.from_product([names, values]); placeholders = np.zeros((len(names)*len(values), len(categories)))
df = pd.DataFrame(placeholders, index=index, columns=categories)
for i in names:
for j in values:
df.loc[i,j] = x1
y1 y2 y3
Name1 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name2 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name3 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name4 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Как бы я использовал словарь, такой как следующий, чтобы заполнить столбец y3
, соответствующий строке x1
и заполнить np.nan
для значений для любых других строк в столбце y3
или когда задано Имя (т.е. Имя1, Имя2, Имя3 и т. Д.) Не является ключом в словаре?
{'Name1': 54, 'Name3': 50}
Ожидаемый результат (0 может быть np.nan
):
y1 y2 y3
Name1 x1 0.0 0.0 54
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name2 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name3 x1 0.0 0.0 50
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name4 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0