前向填充特定行的特定列

Posted

技术标签:

【中文标题】前向填充特定行的特定列【英文标题】:Forward fill on specific column for specific rows 【发布时间】:2022-01-12 04:09:28 【问题描述】:

我有如下数据。每行代表一种特定的颜色,与不同的数字相关联:

Color num1 num2
red 1 2
red 1 na
blue 2 na
blue 2 3
yellow 1 4
yellow 1 na

我想在num2 列上使用前向填充,但只能在相同颜色内使用前向填充。 例如,如果前一行也是blue,则仅用前一行的num2 填充第一行bluenum2

预期结果:

Color num1 num2
red 1 2
red 1 2
blue 2 na
blue 2 3
yellow 1 4
yellow 1 4

我已经尝试了以下代码:

for color in df['color'].unique():
    df[df['color'] == color]['num2']=df[df['color'] == color]['num2'].fillna(method='ffill')

我也尝试过inplace=True,但它不起作用。

【问题讨论】:

【参考方案1】:

这是你要找的吗?

df[['Color']].join(df.groupby('Color').ffill())

【讨论】:

谢谢,只需申请“num2”栏目【参考方案2】:
df = df.replace('na', np.nan)
df['num2'] = df.groupby('Color')['num2'].ffill()

输出:

>>> df
    Color  num1 num2
0     red     1    2
1     red     1    2
2    blue     2  NaN
3    blue     2    3
4  yellow     1    4
5  yellow     1    4

【讨论】:

以上是关于前向填充特定行的特定列的主要内容,如果未能解决你的问题,请参考以下文章

如何更改具有特定列值的 JTable 整行的颜色

将行添加到 datagridview 时填充特定列

Hive:根据特定列中的唯一值填充其他列

有条件的前向填充列[关闭]

每天生成日期和前向填充列[重复]

如何用特定值填充列中的一系列单元格?