我有以下nested_dict
:
{'view_0': {'spain': -1}, 'view_1': {'portugal': 0}, 'view_2': {'morocco': 1.0, 'france': -1.0}, 'view_3': {'germany': 0.5, 'italy': 0.5, 'uk': -0.5, 'ireland': -0.5}}
另一方面,我有以下empty_df
,其中索引显示nested_dict
的键。以及在每个key
的值中找到的nested_dict
列中。
spain portugal morocco france germany italy uk ireland
view_0 0 0 0 0 0 0 0 0
view_1 0 0 0 0 0 0 0 0
view_2 0 0 0 0 0 0 0 0
view_3 0 0 0 0 0 0 0 0
我想将values.values()
的{{1}}放在nested_dict
中,以获得以下输出:
empty_df
为了做到这一点,我尝试了
spain portugal morocco france germany italy uk ireland
view_0 -1 0 0 0 0 0 0 0
view_1 0 0 0 0 0 0 0 0
view_2 0 0 1 -1 0 0 0 0
view_3 0 0 0 0 0.5 0.5 -0.5 -0.5
但是,返回填充有零的empty_df.replace(nested_dict)
,而不是替换值。
答案 0 :(得分:1)
如果可能,请使用DataFrame.from_dict
并将空值替换为fillna
:
df = pd.DataFrame.from_dict(d, orient='index').fillna(0)
也可以按相同的顺序为empty_df
添加reindex
到相同的列和索引名称:
df = (pd.DataFrame.from_dict(d, orient='index')
.reindex(columns=empty_df.columns, index=df_empty.index)
.fillna(0))
print (df)
spain portugal morocco france germany italy uk ireland
view_0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
view_1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
view_2 0.0 0.0 1.0 -1.0 0.0 0.0 0.0 0.0
view_3 0.0 0.0 0.0 0.0 0.5 0.5 -0.5 -0.5
答案 1 :(得分:1)
从字典中构造一个数据框并使用pd.DataFrame.update
:
df_data = pd.DataFrame.from_dict(d, orient='index')
df.update(df_data)
print(df)
spain portugal morocco france germany italy uk ireland
view_0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
view_1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
view_2 0.0 0.0 1.0 -1.0 0.0 0.0 0.0 0.0
view_3 0.0 0.0 0.0 0.0 0.5 0.5 -0.5 -0.5