如何在Pandas中用另一列的值填充NaN值

1,074 阅读1分钟

你可以使用下面的语法将pandas数据框架中某一列的NaN值替换为另一列的值。

df['col1'] = df['col1'].fillna(df['col2'])

这个特殊的语法会将col1中的任何NaN值替换为col2中的相应值。

下面的例子展示了如何在实践中使用这种语法。

例子:用另一列替换缺失的值

假设我们有下面这个带有一些缺失值的pandas DataFrame:

import numpy as np
import pandas as pd

#create DataFrame with some NaN values
df = pd.DataFrame({'team1': ['Mavs', np.nan, 'Nets', 'Hawks', np.nan, 'Jazz'],
                   'team2': ['Spurs', 'Lakers', 'Kings', 'Celtics', 'Heat', 'Magic']})

#view DataFrame
df

        team1	team2
0	Mavs	Spurs
1	NaN	Lakers
2	Nets	Kings
3	Hawks	Celtics
4	NaN	Heat
5	Jazz	Magic

注意,在team1列中有两个NaN值。

我们可以使用fillna()函数将team1 列中的NaN值替换成team2 列中的相应值:

#fill NaNs in team1 column with corresponding values in team2 column
df['team1'] = df['team1'].fillna(df['team2'])

#view updated DataFrame 
df

        team1	team2
0	Mavs	Spurs
1	Lakers	Lakers
2	Nets	Kings
3	Hawks	Celtics
4	Heat	Heat
5	Jazz	Magic

注意,team1列中的两个NaN值都被team2列中的相应数值所取代。

注意:你可以在这里找到fillna()函数的完整在线文档。

其他资源

下面的教程解释了如何在pandas中执行其他常见操作:

如何在Pandas中计算缺失值
如何在Pandas中删除有NaN值的行
如何在Pandas中删除包含特定值的行