📌  相关文章
📜  pandas 用另一列中的值填充 na - Python (1)

📅  最后修改于: 2023-12-03 15:33:24.782000             🧑  作者: Mango

Pandas 用另一列中的值填充 na - Python

在 Pandas 中,我们经常需要修改一列中的值来填补另一列中缺失的值。在这里,我们将讨论如何使用 Pandas 中的 fillna 方法来实现这一目标。

方法一:使用 DataFrame.apply() 方法

我们可以使用 DataFrame.apply() 方法来遍历 DataFrame 中的行并为缺失的值填充一个新值。假设我们有以下 DataFrame:

import numpy as np
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, np.nan, 5],
    'B': [3, np.nan, np.nan, 6, 7],
    'C': [1, 2, 3, 4, 5]
})

现在,我们想使用列 C 中的值来填充列 B 中的缺失值。我们可以使用如下代码:

df['B'] = df.apply(lambda row: row['C'] if pd.isna(row['B']) else row['B'], axis=1)

此代码行使用 apply 方法遍历每一行,并在需要时将列 C 中的值填充到列 B 中的缺失值中。我们使用 pd.isna 函数检测缺失值。

方法二:使用 Series.combine_first() 方法

使用 DataFrame.apply() 方法可以实现我们想要的目标,但假设数据集非常大,这种方法可能会变得非常慢。在这种情况下,我们可以使用 Series.combine_first() 方法来快速填补缺失的值。

df['B'] = df['B'].combine_first(df['C'])

此代码行使用 combine_first() 方法,该方法将列 B 中的缺失值替换为列 C 中的值。

以上就是 Pandas 如何使用另一列中的值填补 na 的两种方法。无论哪种选择,都需要灵活运用,并根据数据集的大小和列数选择最佳策略。