我有一个包含两列的 df,我想合并两列而忽略 NaN 值.问题是有时两列都有 NaN 值,在这种情况下,我希望新列也有 NaN.示例如下:
I have a df with two columns and I want to combine both columns ignoring the NaN values. The catch is that sometimes both columns have NaN values in which case I want the new column to also have NaN. Here's the example:
df = pd.DataFrame({'foodstuff':['apple-martini', 'apple-pie', None, None, None], 'type':[None, None, 'strawberry-tart', 'dessert', None]}) df Out[10]: foodstuff type 0 apple-martini None 1 apple-pie None 2 None strawberry-tart 3 None dessert 4 None None我尝试使用 fillna 并解决这个问题:
I tried to use fillna and solve this :
df['foodstuff'].fillna('') + df['type'].fillna('')我得到:
0 apple-martini 1 apple-pie 2 strawberry-tart 3 dessert 4 dtype: object第 4 行变成了空值.在这种情况下我想要的是 NaN 值,因为两个组合列都是 NaN.
The row 4 has become a blank value. What I wan't in this situation is a NaN value since both the combining columns are NaNs.
0 apple-martini 1 apple-pie 2 strawberry-tart 3 dessert 4 None dtype: object 推荐答案使用 fillna 在一列上,填充值为另一列:
Use fillna on one column with the fill values being the other column:
df['foodstuff'].fillna(df['type'])结果输出:
0 apple-martini 1 apple-pie 2 strawberry-tart 3 dessert 4 None