Pandas:如何根据条件使用填充


您可以使用以下基本语法来使用 pandas 中的ffill()函数根据另一列中的条件传递填充值:

 df[' sales '] = df. groupby (' store ')[' sales ']. ffill ()

仅当商店列中的先前值等于商店列中的当前值时,此特定示例才会传递销售列中填充值。

以下示例展示了如何在实践中使用此语法。

示例:根据 Pandas 中的条件使用填充

假设我们有以下 pandas DataFrame,其中包含有关两个不同零售商店在四个业务季度中的总销售额的信息:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'B', 'A', 'B', 'A', 'B', 'B'],
                   ' quarter ': [1, 2, 1, 3, 2, 4, 3, 4],
                   ' sales ': [12, 22, 30, np.nan, 24, np.nan, np.nan, np.nan]})

#view DataFrame
print (df)

  store quarter sales
0 A 1 12.0
1 to 2 22.0
2 B 1 30.0
3 to 3 NaN
4 B 2 24.0
5 A 4 NaN
6 B 3 NaN
7 B 4 NaN

请注意, Sales列中有多个 NaN 值。

假设我们想要使用Sales列中的先前值填充这些 NaN 值,但想要确保这些值对应于正确的商店。

我们可以使用以下语法来做到这一点:

 #group by store and forward fill values in sales column
df[' sales '] = df. groupby (' store ')[' sales ']. ffill ()

#view updated DataFrame
print (df)

  store quarter sales
0 A 1 12.0
1 to 2 22.0
2 B 1 30.0
3 A 3 22.0
4 B 2 24.0
5 A 4 22.0
6 B 3 24.0
7 B 4 24.0

请注意, Sales列中的 NaN 值已替换为之前的 Sales 值,并且这些值对应于正确的商店。

例如:

  • 行索引位置 3 中的 NaN 值被替换为值22 ,这是与商店 A 对应的销售列中的最新值。
  • 行索引位置 6 中的 NaN 值被替换为值24 ,这是与商店 B 对应的销售列中的最新值。

等等。

注意:您可以在此处找到 pandas ffill()函数的完整文档。

其他资源

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

如何统计pandas中的缺失值
如何删除 Pandas 中包含 NaN 值的行
如何删除 Pandas 中包含特定值的行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注