Pandas:使用另一列的值填充缺失值

3
我进行了一次Pandas合并,现在有两列 - col_xcol_y。我想要将col_y中的值填充到col_x中,但仅限于col_y不是NaN或具有值的行。我想保留col_x中的原始值,并只有在NaN时才从col_y替换。
import pandas as pd

df = pd.DataFrame({
                   'i': [0, 1, 2, 3],
                   'c': [np.nan, {'a':'A'}, np.nan, {'b':'B'}],
                   'd': [{'c':'C'}, np.nan, {'d':'D'}, np.nan]
                 })

期望输出:

i    c         d
0  {'c':'C'}   {'c':'C'}      
1  {'a':'A'}   np.nan
2  {'d':'D'}   {'d':'D'}
3  {'b':'B'}   np.nan
3个回答

3

你只是想要填充缺失值吗?

df.c.fillna(df.d, inplace=True)


2
您可以使用np.where()函数。
因此,类似以下内容:
df['c'] = np.where(df['c'].isna(), df['d'], df['c'])

这应该能解决问题!第一个参数是要检查的条件,第二个参数是如果条件为真要返回的内容,第三个参数是如果条件为假要返回的内容。


0

尝试:

df["c"] = [y if str(x) == "nan" else x for x,y in zip(df.c,df.d)]

可能有更简洁的方法,但这是一行代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接