我做了一个熊猫合并,现在有两列——col_x
和col_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)]
可能更简洁,但这是一行