首先,我们需要先导入Pandas库:
import pandas as pd
然后,我们构造一份示例数据:
data = {'group': ['A', 'B', 'A', 'B', 'A', 'B'],
'str': ['hello', 'world', 'foo', 'bar', 'aaa', 'bbb']
}
df = pd.DataFrame(data)
数据包含两列:group列和str列。现在我们要将同一组(group)的所有字符串(str)连接起来,生成一列新的列(concat_str)。
实现这个功能,我们需要使用groupby()和agg()函数。groupby()可以按照一列或多列的不同值把数据分为不同的组;agg()函数提供了多种功能,可以对不同组的数据执行不同的聚合操作。
我们对示例数据进行如下处理:
df['concat_str'] = df.groupby('group')['str'].transform(lambda x: ' '.join(x))
df_agg = df.groupby('group').agg({'str': list, 'concat_str': 'first'})
首先,我们使用groupby()函数将数据按照group列的不同值分为两组,然后对每一组的str列使用transform()函数,将同一组的字符串连接起来。transform()函数的参数是一个函数,这里我们使用lambda表达式传入了join()函数,将同一组的字符串按照空格连接起来。
然后,我们再次使用groupby()函数将数据按照group列的不同值分为两组,同时使用agg()函数对每一组的str列和concat_str列进行聚合操作。agg()函数的参数是一个字典,定义了对每一列要执行的聚合操作。这里我们使用list将每一组的str列聚合成一个列表,使用’first’将每一组的concat_str列聚合成第一个值。
最终,我们得到了如下的结果:
group str concat_str
0 A hello hello foo aaa
1 B world world bar bbb
2 A foo hello foo aaa
3 B bar world bar bbb
4 A aaa hello foo aaa
5 B bbb world bar bbb
str concat_str
group
A [hello, foo, aaa] hello foo aaa
B [world, bar, bbb] world bar bbb
其中,concat_str列是通过将同一组的字符串连接起来生成的,str列则是对每一组的字符串生成了一个列表。