gpt4 book ai didi

python - 如何根据 "identifier columns"和 pandas 数据框中的附加条件替换值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:54 26 4
gpt4 key购买 nike

作为某些数据清理的一部分,我需要“对齐”每个“年份”和“ID”组合的“A 列”中的值,具体取决于“年份”的“A 列”中是否有任何值 = 1 ' 和 'ID' 组合

我已经尝试过np.where(),但只收到ValueError:只能比较相同标签的Series对象

这是一个简短的数据框示例:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1, 2007, 0],
[2, 2008, 0],
[2, 2009, 1],
[3, 2007, 0],
[4, 2010, 0],
[4, 2011, 1],
[4, 2011, 0]]), #I want to change this 0 to 1
columns=['ID', 'Year', 'ColA'])

结果应该是这样的:

result = pd.DataFrame(np.array([[1, 2007, 0], 
[2, 2008, 0],
[2, 2009, 1],
[3, 2007, 0],
[4, 2010, 0],
[4, 2011, 1],
[4, 2011, 1]]),
columns=['ID', 'Year', 'ColA'])

最佳答案

我们可以使用groupby.transformany 。然后我们会得到一个 boolean 返回,因此如果我们使用 astype 将其转换为 int我们得到了想要的结果:

m = df.groupby(['ID', 'Year'])['ColA'].transform(any).astype(int)
df['ColA'] = m
   ID  Year  ColA
0 1 2007 0
1 2 2008 0
2 2 2009 1
3 3 2007 0
4 4 2010 0
5 4 2011 1
6 4 2011 1

关于python - 如何根据 "identifier columns"和 pandas 数据框中的附加条件替换值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56924953/

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