简体   繁体   English

如何将字典的值插入 pandas 中 dataframe 的 null 值中?

[英]How to insert the values of dictionary into null values of a dataframe in pandas?

I am new to pandas.我是 pandas 的新手。 I am facing an issue with null values.我面临 null 值的问题。 I have a dict of 3 values and keys which has to be inserted into a column of missing values how do I do that?我有一个包含 3 个值和键的字典,必须插入到缺失值列中,我该怎么做? The last word key is the name of the column name最后一个词key是列名的名字

In [57]: df
Out[57]: 
   a   b   c  d  
0  0   1   2  3  
1  0 NaN   0  1  
2  0 Nan   3  Nan 
3  0   1   2  5  
4  0 Nan   2  Nan 
In [58]: dict= {df_b : [11,22,44], df_d: [33,54]

The output I want is below.我想要的output如下。

Out[57]: 
   a   b   c  d  
0  0   1   2  3  
1  0   11  0  1  
2  0   22  3  33 
3  0   1   2  5  
4  0   44  2  54

Given your data鉴于您的数据

d = [[0,   1,   2,  3  ],
[0, np.nan,   0,  1  ],
[0, np.nan,   3,  np.nan], 
[0,   1,   2,  5  ],
[0, np.nan,   2,  np.nan]] ]
df = pd.DataFrame(d, columns=['a', 'b', 'c', 'd'])
d = {'df_b' : [11,22,44], 'df_d': [33,54]}

try pandas.isna()试试pandas.isna()

for key in d:
    column_name = key.split('_')[-1]
    val = d[key]
    for i,v in zip(df[df[column_name].isna()].index, val):
        df.loc[i, column_name] = v

output output

a   b     c    d
0   1.0   2   3.0
0   11.0  0   1.0
0   22.0  3   33.0
0   1.0   2   5.0
0   44.0  2   54.0

You can use df.loc with isnull() to select the NaN values and replace them with the items in your list.您可以使用带有isnull()df.loc到 select 的NaN值,并将它们替换为列表中的项目。

import pandas as pd

import numpy as np

mydict = {'b' : [11,22,44], 'd': [33,54]}
df = pd.DataFrame({'a': [0,0,0,0,0], 'b': [1, np.nan, np.nan, 1, np.nan], 'c': [2,0,3,2,2], 'd': [3,1,np.nan,5,np.nan]})

for key in mydict:
    df.loc[df[key].isnull(), key] = mydict[key]

#   a     b  c     d
0  0   1.0  2   3.0
1  0  11.0  0   1.0
2  0  22.0  3  33.0
3  0   1.0  2   5.0
4  0  44.0  2  54.0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM