У меня есть аналогичный набор данных, и хотя код дает мне правильный результат; Я не хочу использовать три цикла for. Есть ли способ сделать это лучше?
import pandas as pd
col = ["a","b","c","d"]
index = ["0","1","2","3"]
dict_ = {("0","a"):8,
("1","a"):3,
("3","b"):2}
df = pd.DataFrame(columns=col,index=index)
for i in range(len(dict_)):
for j in range(len(df)):
for k in range(len(df)):
if (str(df.index[j]),str(df.columns[k])) == dict_.keys()[i]:
df.at[df.index[j],df.columns[k]] = dict_.values()[i]
print df






IIUC, используя reindex
pd.Series(dict_).unstack().reindex(index=index,columns=col)
Out[245]:
a b c d
0 8.0 NaN NaN NaN
1 3.0 NaN NaN NaN
2 NaN NaN NaN NaN
3 NaN 2.0 NaN NaN
@ W-B .. всегда дает красивые решения и подсказки :-) +1
Красивый! Спасибо :')