你可以做一个
groupby
在这里。最简单的方法就是直接使用
Column B
,因为这已经对应于您要分组的行。鉴于这些数据:
import pandas as pd
df = pd.DataFrame({'ColumnA': ['Data1', 'DataA', 'DataB',
'Data2', 'DataC', 'DataD', 'DataE',
'Data3'],
'ColumnB': ['A', None, None,
'B', None, None, None,
'C']})
# ColumnA ColumnB
# 0 Data1 A
# 1 DataA None
# 2 DataB None
# 3 Data2 B
# 4 DataC None
# 5 DataD None
# 6 DataE None
# 7 Data3 C
通过填写缺失的值来创建要分组的内容:
grouper = df['ColumnB'].ffill()
# 0 A
# 1 A
# 2 A
# 3 B
# 4 B
# 5 B
# 6 B
# 7 C
# Name: ColumnB, dtype: object
然后聚合为concat字符串,如下所示
this post
:
output = df['ColumnA'].groupby(grouper).apply(lambda x : ', '.join(x)).reset_index()
最终结果:
ColumnB ColumnA
0 A Data1, DataA, DataB
1 B Data2, DataC, DataD, DataE
2 C Data3