使用groupby
和agg
函数合并一个DataFrame
中a
列相同的项,并将b
列的字符串相加,获得一个新的DataFrame
,其中:
a
列包含原始DataFrame
中a
列的唯一值,b
列包含与每个a
值相对应的合并后的b
列字符串。
import pandas as pd
data = {
'a': ['foo', 'bar', 'foo', 'bar', 'baz'],
'b': ['one', 'two', 'three', 'four', 'five']
}
df = pd.DataFrame(data)
# 使用groupby和agg函数合并a列相同的项,并将b列的字符串相加
result = df.groupby('a')['b'].agg(lambda x: ' '.join(x)).reset_index()
'''
df.groupby('a'): 按照a列的值对df进行分组,结果是一个GroupBy对象。
['b']: 选择b列,获得一个按a列分组且只包含b列数据的GroupBy对象。
.agg(lambda x: ' '.join(x)): 应用聚合函数。对于每个分组,lambda函数都会被调用,其中x是当前分组的b列的值。lambda函数使用' '.join(x)将这些值连接成一个字符串。这样,每个分组中的b列值都被合并到一个字符串中。
.reset_index(): 将结果转换回一个标准的DataFrame形式。因为在分组操作后,a列成为了索引,reset_index()会把这个索引转换回一个普通的列。
'''
print(result)
'''
输出:
a b
0 bar two four
1 baz five
2 foo one three
'''