2024-06-17 10:39:02 发布
网友
我想把相邻的消息合并成一行
举个例子,
Name Message A hi A how are you B find , and you ? A good A have you finished the homework
我想要的是这样的
Name Message A hi how are you B find , and you ? A good have you finished the homework
这可以用groupby()来完成吗
groupby()
我们可以group重复行的相邻块上的数据帧,并使用first和Message使用.join聚合Name
group
first
Message
.join
Name
b = df['Name'].ne(df['Name'].shift()).cumsum() df.groupby(b, as_index=False).agg({'Name': 'first', 'Message': ' '.join})
Shift将Name列向下移动一个单位,然后将移位列与未移位列进行比较,以创建布尔掩码,该掩码可用于标识相邻重复行之间的边界
Shift
>>> df['Name'].ne(df['Name'].shift()) 0 True 1 False 2 True 3 True 4 False Name: Name, dtype: bool
现在,在上面的布尔掩码上取累积的和,以标识列Name中的值保持不变的行块
>>> df['Name'].ne(df['Name'].shift()).cumsum() 0 1 1 1 2 2 3 3 4 3 Name: Name, dtype: int64
然后group使用first和Message使用.join在上述识别块上的数据帧和聚合列Name
Name Message 0 A hi how are you 1 B find , and you ? 2 A good have you finished the homework
我们可以
group
重复行的相邻块上的数据帧,并使用first
和Message
使用.join
聚合Name
解释
Shift
将Name
列向下移动一个单位,然后将移位列与未移位列进行比较,以创建布尔掩码,该掩码可用于标识相邻重复行之间的边界现在,在上面的布尔掩码上取累积的和,以标识列
Name
中的值保持不变的行块然后
group
使用first
和Message
使用.join
在上述识别块上的数据帧和聚合列Name
相关问题 更多 >
编程相关推荐