Python 基于另一行更新数据帧中的行值';s的价值观?

Python 基于另一行更新数据帧中的行值';s的价值观?,python,pandas,numpy,Python,Pandas,Numpy,我有一个包含两列的数据框:a和b df 我想基于a列更新b列的值 a b 0 john 123 1 john 123 2 mark 456 3 mark 456 4 marcus 789 如果john在b中有值123。剩余的john也必须具有相同的值。示例: df = pd.DataFrame({'A': [0," ", 2, 3, 4],

我有一个包含两列的数据框:
a
b

df

我想基于
a
列更新
b
列的值

         a         b
0       john      123
1       john      123
2       mark      456
3       mark      456
4       marcus    789
如果
john
b
中有值
123
。剩余的
john
也必须具有相同的值。

示例:

df = pd.DataFrame({'A': [0," ", 2, 3, 4],
                   'B': [5, 6, 7, 8, 9],
                   'C': ['a', 'b', 'c', 'd', 'e']})

df1=df.replace({'A':" "},3)    
希望这对你有所帮助,对你来说

df1=df.replace({'b':" "},123)

假设您的数据帧是:

df = pd.DataFrame({'a': ['john', 'john', 'mark', 'mark', 'marcus'], 'b': [123, '', '', 456, 789]})
您可以在列
a
上创建数据帧,然后在分组数据帧的列
b
上应用
transform
,返回分组列
b
中的第一个非空值

使用:

结果:

# print(df)

        a    b
0    john  123
1    john  123
2    mark  456
3    mark  456
4  marcus  789

谢谢但如果最后一行的“b”值为空<代码>马库斯是``。那应该是什么case@Zanthoxylumpiperitum那么,在这种情况下,我必须修改答案。@Zanthoxylumpiperitum在这种情况下,
b列中的值是多少?与原始值相同value@Zanthoxylumpiperitum检查编辑后的答案。在这种情况下,这应该是可行的。
df['b'] = (
    df.groupby('a')['b']
    .transform(lambda s: s[s.ne('')].iloc[0] if s.ne('').any() else s)
)
# print(df)

        a    b
0    john  123
1    john  123
2    mark  456
3    mark  456
4  marcus  789