首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据上一行值更改行值

根据上一行值更改行值
EN

Stack Overflow用户
提问于 2021-12-06 04:05:47
回答 1查看 46关注 0票数 1

我有一张数据,看起来是这样的:

代码语言:javascript
复制
Province              Admissions
Eastern Cape          10
Private               3
Public                7
Free State            20
Private               15 
Public                5

我想把“私人”和“公共”改为“省”。我想实现以下数据:

代码语言:javascript
复制
Province               Admissions
Eastern Cape           10
Eastern Cape-Private   3
Eastern Cape-Public    7
Free State             20
Free State-Private     15 
Free State-Public      5

实际上,我已经通过以下代码实现了这一点:

代码语言:javascript
复制
for row in range(0,len(df)):
    df['Province'] = np.where((df['Province'] == 'Private'), df['Province'].shift(1)+' '+ df['Province'], df['Province'])
    df['Province'] = np.where((df['Province'] == 'Public'), df['Province'].shift(2)+' '+ df['Province'], df['Province'])

不过,我想以一种更一般的方法去做,以防私人和公众的秩序被交换。现在,二等兵先于公众,因此我的方法工作。如有任何意见,将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2021-12-06 04:12:28

您可以执行maskffill创建添加数组

代码语言:javascript
复制
s = df.Province.mask(df.Province.isin(['Private','Public'])).ffill()
df['Province'] = np.where(df.Province.isin(['Private','Public']), s + ' ' + df.Province, df.Province)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70240761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档