gpt4 book ai didi

Python - Pandas 数据框 - 生成包含组级信息的列

转载 作者:行者123 更新时间:2023-11-28 18:32:26 26 4
gpt4 key购买 nike

我生成了一个 Panda 的 DataFrame:

data={'id': [1.0, 1, 2, 3, 3, 3, 4.0,4.0,5,5],'some':['Yes','No','No','Yes','Yes','Yes','No','No','No','Yes']}
df=DataFrame(data)

在这个 DataFrame 中,我想添加一个列“someIDlevel”,其中包含“在 ID”级别的“一些”信息。以下规则适用:只要在一个 ID 中,“some”中至少有一个“Yes”,而不是“someIdlevel”对于那个特定的“id”应该全部是“yes”,否则对于那个特定的 ID 应该是“No”。

所以最终的数据框应该看起来就像是由这段代码创建的:

data_fin={'id': [1.0, 1, 2, 3, 3, 3, 4.0,4.0,5,5],'some':'Yes','No','No','Yes','Yes','Yes','No','No','No','Yes'],'someIDlevel':['Yes','Yes','No','Yes','Yes','Yes','No','No','Yes','Yes']}       df_fin=pd.DataFrame(data_fin)

最佳答案

您可以执行以下操作。

首先对 groupby 执行左合并:

df = pd.merge(
df,
df.some.groupby(df.id).apply(lambda g: 'Yes' if 'Yes' in g.values else 'No').reset_index(),
how='left')

然后,只需将新列重命名为您想要的名称即可:

>>> df.rename(columns={0: 'someIdlevel'})
id some someIdlevel
0 1 Yes Yes
1 1 No Yes
2 2 No No
3 3 Yes Yes
4 3 Yes Yes
5 3 Yes Yes
6 4 No No
7 4 No No
8 5 No Yes
9 5 Yes Yes

关于Python - Pandas 数据框 - 生成包含组级信息的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652292/

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