以下是我的示例数据框:

df = pd.DataFrame(data=[[3, np.nan, np.nan],[5, np.nan, np.nan]], index=['country1', 'country2'], columns=[2021, 2022, 2023])

这是我的示例词典:

d = {'country1': {'key1': 'a', 'key2': 'assumed','key3': {2022: '10', 2023: ' 20'}}, 'country2': {'key1': 'b', 'key2': 'assumed', 'key3': {2022: '30', 2023: ' 40'}}}

我的目标是使用字典d来替换数据帧df中缺失的值.我想我会用这样的东西:

df.fillna(d2)

其中d2是基于字典d的字典:

d2 = {'country1': {2022: '10', 2023: ' 20'}, 'country2': {2022: '30', 2023: ' 40'}}

我不知道如何生成d2,但它无论如何都不起作用.

结果如下:

pd.DataFrame(data=[[3, 10, 20],[5, 30, 40]], index=['country1', 'country2'], columns=[2021, 2022, 2023])

推荐答案

我们仍然可以使用fillna,但在此之前,我们必须以适合fillna的格式规范化/转换字典

df.T.fillna({k: v['key3'] for k, v in d.items()}).T

后果

         2021 2022 2023
country1  3.0   10   20
country2  5.0   30   40

Python相关问答推荐

当变量也可以是无或真时,判断是否为假

如何在矩阵上并行化简单循环?

是什么导致对Python脚本的jQuery Ajax调用引发500错误?

如何在PIL、Python中对图像应用彩色面膜?

在Python和matlab中显示不同 colored颜色 的图像

Class_weight参数不影响RandomForestClassifier不平衡数据集中的结果

Pythind 11无法弄清楚如何访问tuple元素

如何在BeautifulSoup中链接Find()方法并处理无?

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

Mistral模型为不同的输入文本生成相同的嵌入

如何在虚拟Python环境中运行Python程序?

基于字符串匹配条件合并两个帧

如果值发生变化,则列上的极性累积和

Python Pandas获取层次路径直到顶层管理

在单次扫描中创建列表

Flask Jinja2如果语句总是计算为false&

如何将数据帧中的timedelta转换为datetime

巨 Python :逆向猜谜游戏

为什么Python内存中的列表大小与文档不匹配?