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