在数据框中构建两个一组

Built group of two within a dataframe

我想根据 ID 在数据框中创建一组两个。所以基本上使用 space 连接第二列内的文本。使用 groupby() 只会连接整个文本。我想自己设置每个 ID 的组大小。如果组大小不相加,则 none 应该从另一个组添加。

d = {'ID': [0,0,0,1,1,1,1], 'col2': ['Car','Tree','House','Cat','Dog','Cloud','Bottle']}
pd.DataFrame(data=d)

#Expected Output

     ID  col2
0     0  'Car Tree'
1     0  'House'
2     1  'Cat Dog'
3     1  'Cloud Bottle'

使用 cumcount 创建一个顺序计数器,然后将其除以 2 (desired group size) 以创建分区,然后将数据帧按 ID 与分区一起分组并聚合 col2 join

i = df.groupby('ID').cumcount() // 2
df.groupby(['ID', i], as_index=False)['col2'].agg(' '.join)

   ID          col2
0   0      Car Tree
1   0         House
2   1       Cat Dog
3   1  Cloud Bottle