Python Pandas:为每个索引值连接多个行值

2024-04-25 02:24:49 发布

您现在位置:Python中文网/ 问答频道 /正文

对于这个给定的示例数据帧 Starting data frame 我想连接每个唯一项目的“level1”和“level2”的值,返回

Required result 对于每个项目,结果应该只包含一行,“level1”和“level2”中的每个相关值都用条形符号连接和分隔。在

我想知道,如果目前使用的是一个循环的方法,可以更快地使用pandas的循环方法来实现。在


Tags: 数据项目方法示例pandasdatarequired符号
2条回答

您可以对索引轴执行groupbyw.r.t。在选择与每个组对应的所有唯一元素之后,通过使用sep="|"将所有列连接起来,聚合所有列。在

df.groupby(level=0).agg(lambda grp: '|'.join(grp.unique()))

enter image description here

数据:

^{pr2}$

这对你有用吗?在

我将添加DF代码,使其他人也更容易。在

df = pd.DataFrame({'project': [1,1,1,1,1,2,3], 'Level 1' : ['Fruit', 'Fruit', 
'Fruit', 'Vegetable', 'Vegetable', 'Fruit', 'Vegetable'], 'Level 2' : ['Apple', 
'Banana', 'Lemon', 'Carrot', 'Tomato', 'Banana', 'Cucumber']})
df.set_index('project', inplace = True)

grouped = df.groupby(df.index).agg(lambda x: '|'.join(x.unique()))

相关问题 更多 >