@ rfan的回答当然有效,作为替代,这是使用熊猫
groupby的方法.
.groupby()按“b”列对数据进行分组 – sort = False是保持订单完整所必需的. .apply()将函数应用于每组b数据,在这种情况下,将字符串连接在一起,用空格分隔.
In [67]: df.groupby('b', sort=False)['a'].apply(' '.join)
Out[67]:
b
DT The
Org Skoll Foundation
, ,
VBN based
IN in
Location Silicon Valley
Name: a, dtype: object
编辑:
为了处理更一般的情况(重复的非连续值) – 一种方法是首先添加一个跟踪列,该列跟踪每行适用的连续数据组,如下所示:
df['key'] = (df['b'] != df['b'].shift(1)).astype(int).cumsum()
然后将密钥添加到groupby中,即使重复值也应该有效.例如,使用带有重复的虚拟数据:
df = DataFrame({'a': ['The', 'Skoll', 'Foundation', ',',
'based', 'in', 'Silicon', 'Valley', 'A', 'Foundation'],
'b': ['DT', 'Or