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

你只是想填充吗?

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

您可以使用np.where()

比如

df['c'] = np.where(df['c'].isna(), df['d'], df['c'])

应该可以!第一个形参是要检查的条件,第二个形参是如果条件为真返回什么,第三个形参是如果条件为假返回什么。

尝试:

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

可能更简洁,但这是一行

相关内容

  • 没有找到相关文章

最新更新