gpt4 book ai didi

python - 在组 pandas 中设置值

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:45 24 4
gpt4 key购买 nike

我正在尝试为 pandas 中的每个分组分配一个名称。

我有一个数据框和一个名称列表:

df = pd.DataFrame({'a':[1, 1, 2, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10],
'ids':[234, 345, 456, 444, 333, 22, 11, 5, 1, 2, 3, 4, 6]})


names = ['Matt', 'Jeff', 'Steph', 'Shannon']

我想将这些名称分配给每条记录,循环方式。所以我创建了一个辅助函数来延长这个列表以匹配长度。

def match_length(list_, length):
return length//len(list_)*list_+list_[:length%len(list_)]

df['owner'] = match_length(names, len(df))

a ids owner
1 234 Matt
1 345 Jeff
2 456 Steph
2 444 Shannon
3 333 Matt
4 22 Jeff
5 11 Steph
6 5 Shannon
7 1 Matt
7 2 Jeff
8 3 Steph
9 4 Shannon
10 6 Matt

我遇到的问题是我想确保将同一个人分配给每个 'a' 组。我不希望“马特”和“杰夫”都拥有前两条记录,只有马特应该拥有它们。我已经尝试过 .groupby().transform() .apply().assign() 没有运气。我不确定如何首先操作我的列表。它应该 返回..

    a  ids    owner
1 234 Matt
1 345 Matt
2 456 Jeff
2 444 Jeff
3 333 Steph
4 22 Shannon
5 11 Matt
6 5 Jeff
7 1 Steph
7 2 Steph
8 3 Shannon
9 4 Matt
10 6 Jeff

最佳答案

这是您需要的吗?

(df.groupby('a').ngroup()%4).map(dict(enumerate(names)))
Out[339]:
0 Matt
1 Matt
2 Jeff
3 Jeff
4 Steph
5 Shannon
6 Matt
7 Jeff
8 Steph
9 Steph
10 Shannon
11 Matt
12 Jeff
dtype: object

关于python - 在组 pandas 中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54770873/

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