You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas数据处理需求:合并列及条件删除/聚合操作

Pandas DataFrame 处理方案

先给出原始数据的创建代码:

import pandas as pd

# 原始DataFrame
df = pd.DataFrame({
    'A': ['A', 'A', 'B'],
    'B': ['Apple', 'Apple', 'Banana'],
    'C': ['x', 'y', 'x']
})

1. 合并A、B列为D列

直接通过字符串拼接生成新列D,格式为B列值 + 空格 + A列值,如果不需要保留原A、B列可以直接删除:

# 生成D列
df['D'] = df['B'] + ' ' + df['A']
# 可选:删除原A、B列
df = df.drop(columns=['A', 'B'])

执行后得到的结果:

CD
0xApple A
1yApple A
2xBanana B

2. 针对含C='x'的A、B组的两种操作

操作一:删除所有对应相同A、B值的行

先定位出所有包含C='x'的A、B组合,再过滤掉这些组合的全部行:

# 若之前删除了A、B列,可从D列拆分恢复:df[['B','A']] = df['D'].str.split(' ', expand=True)
groups_to_remove = df[df['C'] == 'x'][['A', 'B']].drop_duplicates()
# 生成过滤掩码
mask = df.merge(groups_to_remove, on=['A', 'B'], how='left').notna().any(axis=1)
# 过滤得到结果
result_delete = df[~mask]

最终结果(移除所有A='A'的行):

ABCD
2BBananaxBanana B

操作二:将相同A、B值对应的C列值聚合为数组

按A、B(或直接按D列,因为D是A+B的唯一组合)分组,把C列的值聚合为列表:

# 按A、B、D分组,聚合C列为列表
result_aggregate = df.groupby(['A', 'B', 'D'])['C'].agg(list).reset_index()

最终结果:

ABDC
0AAppleApple A['x', 'y']
1BBananaBanana B['x']

内容的提问来源于stack exchange,提问作者terrenana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:50:24