在数据框中构建两个一组
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
我想根据 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