gpt4 book ai didi

python - 回顾数据框中的上一行并选择特定记录

转载 作者:行者123 更新时间:2023-12-01 07:51:02 25 4
gpt4 key购买 nike

我有一个数据框df,看起来像:

           name     year    dept         metric
0 Steve Jones 2018 A 0.703300236
1 Steve Jones 2019 A 0.255587222
2 Jane Smith 2018 A 0.502505934
3 Jane Smith 2019 B 0.698808749
4 Barry Evans 2019 B 0.941325241
5 Tony Edwards 2017 B 0.880940126
6 Tony Edwards 2018 B 0.649086123
7 Tony Edwards 2019 A 0.881365905

我想创建 2 个新的数据框,其中包含某人从部门 A 移动到 B 的记录和另一个人从部门 B 移动到 A 的记录。因此我想要的输出是:

            name        year    dept         metric
0 Jane Smith 2018 A 0.502505934
1 Tony Edwards 2019 B 0.649086123

name year dept metric
0 Jane Smith 2019 B 0.698808749
1 Tony Edwards 2018 B 0.881365905

某人在旧部门的最后一年的记录被捕获在一个数据框中,而新部门的第一年仅在另一个数据框中捕获。这些记录按名称和年份排序,因此顺序正确。

我已经尝试过:

for row in agg_data.rows:

df['match'] = np.where(df.dept == 'A' and df.dept.shift() =='B','1')
df['match'] = np.where(df.dept == 'B' and df.dept.shift() =='A','2')

然后将记录选择到数据框中,但我让它工作。

最佳答案

我相信你需要:

df = df[df.groupby('name')['dept'].transform('nunique') > 1]
df = df.drop_duplicates(['name','dept'], keep='last')

df1 = df.drop_duplicates('name')
print (df1)
name year dept metric
2 Jane Smith 2018 A 0.502506
6 Tony Edwards 2018 B 0.649086

df2 = df.drop_duplicates('name', keep='last')
print (df2)
name year dept metric
3 Jane Smith 2019 B 0.698809
7 Tony Edwards 2019 A 0.881366

关于python - 回顾数据框中的上一行并选择特定记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56214582/

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