擅长:python、mysql、java
<p>如果我了解你的问题:</p>
<pre><code>import pandas as pd
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]})
def match_length(list_, length):
return length//len(list_)*list_+list_[:length%len(list_)]
names = ['Matt', 'Jeff', 'Steph', 'Shannon']
dg = df.groupby('a')['ids'].apply(tuple).reset_index()
dg['owner'] = match_length(names, len(dg))
rows = []
_ = dg.apply(lambda row: [rows.append([row['a'], nn, row['owner']])
for nn in row.ids], axis=1)
dg = pd.DataFrame(rows, columns=dg.columns)
print(dg)
</code></pre>
<p>所以结果:</p>
<pre><code> a ids owner
0 1 234 Matt
1 1 345 Matt
2 2 456 Jeff
3 2 444 Jeff
4 3 333 Steph
5 4 22 Shannon
6 5 11 Matt
7 6 5 Jeff
8 7 1 Steph
9 7 2 Steph
10 8 3 Shannon
11 9 4 Matt
12 10 6 Jeff
</code></pre>