import pandas as pd
data = {
'Name': ['Alice', 'Alice', 'Charlie', 'Charlie'],
'Age': [25, 30, 35, 40],
'branch': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
# concatenate the string
df['branch'] = df.groupby(['Name'])['branch'].transform(lambda x : ' '.join(x))
# show the dataframe
print(df)
任何人都可以解释当我们对 group by 的结果应用转换函数时会发生什么?我得到的输出是
姓名 | 年龄 | 分行 |
---|---|---|
爱丽丝 | 25 | 纽约洛杉矶 |
爱丽丝 | 30 | 纽约洛杉矶 |
查理 | 35 | 芝加哥 休斯顿 |
查理 | 40 | 芝加哥 休斯顿 |
使用
groupby
列作为分组键将 Name
函数应用于 df。这意味着 df 根据 Name
列中的唯一值分为几组。
应用的
transform
函数中接下来发生的事情是将 lambda 函数独立地应用于每个组。
lambda 函数 lambda x: ' '.join(x)
应用于每组 branch
值。此函数采用一组 branch
值(由 x 表示),并使用 ' '.join(x)
表达式将它们连接成一个以空格分隔的字符串,该表达式返回一个 pd.Series
,最终分配回 branch
列。