回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试着给熊猫中的每个分组分配一个名称。你知道吗</p>
<p>我有一个数据框和一个名字列表:</p>
<pre><code>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']
</code></pre>
<p>我想把这些名字分配给每个记录,循环式的。所以我创建了一个helper函数来拉长这个列表以匹配长度。你知道吗</p>
<pre><code>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
</code></pre>
<p>我遇到的问题是,我想确保将同一个人分配给每个<code>'a'</code>组。我不想让“马特”和“杰夫”都拥有前两张唱片,只有马特应该拥有它们。我试过<code>.groupby()</code>和<code>.transform()</code>、<code>.apply()</code>以及<code>.assign()</code>但都没有成功。我不知道如何先处理我的名单。它应该返回。。你知道吗</p>
<pre><code> 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
</code></pre>