gpt4 book ai didi

python - Pandas :比较行值并修改下一列的行值

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:10 28 4
gpt4 key购买 nike

我有这个 Pandas 数据框:

    A                             B
0 xyz Lena
1 NaN J.Brooke
2 NaN B.Izzie
3 NaN B.Rhodes
4 NaN J.Keith
.....

我想比较 B 列的值,如果行值以 B 开头,那么在它的 A 列的相邻行中应该写入新的,类似地,如果 J 那么旧的。以下是我的预期:

    A                             B
0 xyz Lena
1 old J.Brooke
2 new B.Izzie
3 new B.Rhodes
4 old J.Keith
.....

我无法理解如何做到这一点。首先,我可以使用 startswith() 但是如何比较一行值,然后在另一列的相邻行中获得所需的字段值?这是一个小案例,我正在尝试很多 og 更复杂的事情......Pandas 确实很强大!

最佳答案

使用numpy.selectSeries.str.startswith如果需要根据条件设置新值:

m1 = df['B'].str.startswith('B')
m2 = df['B'].str.startswith('J')

如果还需要通过 Series.isna 测试缺失值链条件:

m1 = df['B'].str.startswith('B') & df['A'].isna()
m2 = df['B'].str.startswith('J') & df['A'].isna()

df['A'] = np.select([m1, m2], ['new','old'], df['A'])
print (df)
A B
0 xyz Lena
1 old J.Brooke
2 new B.Izzie
3 new B.Rhodes
4 old J.Keith

或者使用DataFrame.loc :

df.loc[m1, 'A'] = 'new'
df.loc[m2, 'A'] = 'old'

关于python - Pandas :比较行值并修改下一列的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56946779/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com