Row_Number | 列A | 列B | |
---|---|---|---|
1 | 数据1 | A||
2 | 数据A | ||
3 | 数据B | ||
4 | 数据2 | B | |
5 | 数据C | ||
6 | 数据D | ||
7 | 数据E | ||
8 | 数据3 | C |
您可以在此处执行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字符串,如下所示:
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