gpt4 book ai didi

python - 用于条件替换的 Groupby 或循环

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:40 25 4
gpt4 key购买 nike

我对 Python 比较陌生。我有以下性质的数据框

ID     DEPT     DOMAIN          
201606 271 GE
**201606 896 IR**
201608 271 GE
201609 271 GE
.....................
...................
**201701 896 FR**
201606 271 GE

我想在 ID 中找到从 2017 年开始域名发生变化的所有部门。
然后,我想用与 2017* 行的帐面值相匹配的域的值替换域(在 2016* 行中)
例如,在上面说明的 df 中,我想用 FR 替换 DEPT 896 的 2016* 行的域值,这是 2017* 行中相应部门的域值。

最佳答案

我想你首先需要sort_values然后使用 duplicated对于 last 2017 和 last map + fillna 的系列:

m1 = ~df.sort_values('ID').duplicated('DEPT', keep='last')
m2 = df['ID'].astype(str).str[:4] == '2017'
s = df[m1 & m2].set_index('DEPT')['DOMAIN']
df['DOMAIN'] = df['DEPT'].map(s).fillna(df['DOMAIN'])

print (df)
ID DEPT DOMAIN
0 201606 271 GE
1 201606 896 FR
2 201608 271 GE
3 201609 271 GE
4 201701 896 FR
5 201606 271 GE

关于python - 用于条件替换的 Groupby 或循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48782192/

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