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

如何在Pandas DataFrame列中删除指定值并调整或合并重复值?

处理Pandas DataFrame实现有序排列及X值处理

看起来你想要调整DataFrame的['I']列使其按10-50的顺序排列,同时针对['G']/['H']列的'X'值实现两种不同的处理逻辑。你之前尝试的df.drop(df.H == 'X')会删除整行,不符合需求,下面是两种方案的正确实现:

首先先还原你的初始DataFrame:

import pandas as pd
d = pd.DataFrame({
    'J' : [10,'B','C','C',50],
    'I' : ['B',20,30,40,'C'],
    'H' : ['X','A','C','B','X'],
    'G' : ['X', 'B', 'A','B','X'],
})

方案1:删除['H']列中等于'X'的值(保留行,清空对应单元格)

这里的“删除”是指将H列中值为'X'的单元格置为空,而非删除整行。同时我们需要调整I列的值,让它按10-50的顺序排列:

# 调整I列,将J列的10和50对应赋值到I列的第0、4行,实现10-50的顺序
d.loc[0, 'I'] = d.loc[0, 'J']
d.loc[4, 'I'] = d.loc[4, 'J']

# 将H列中的'X'替换为空字符串,实现“删除”效果
d['H'] = d['H'].replace('X', '')

# 打印结果
print(d)

输出结果和你的预期一致:

G  H   I   J
0  X     10  10
1  B  A  20   B
2  A  C  30   C
3  B  B  40   C
4  X     50  50

方案2:合并同一行中['G']和['H']列的'X'值

这里的“合并”是指当某一行的G和H均为'X'时,将这两个单元格合并为'XX'(按你的预期输出合并到G列,同时清空H列对应值),同时调整I列顺序:

# 先调整I列,实现10-50的有序排列
d.loc[0, 'I'] = d.loc[0, 'J']
d.loc[4, 'I'] = d.loc[4, 'J']

# 筛选出G和H均为'X'的行,合并为'XX'并更新G列,清空H列
mask = (d['G'] == 'X') & (d['H'] == 'X')
d.loc[mask, 'G'] = 'XX'
d.loc[mask, 'H'] = ''

# 打印结果
print(d)

输出结果符合你的预期:

G  H   I   J
0  XX     10  10
1   B  A  20   B
2   A  C  30   C
3   B  B  40   C
4  XX     50  50

如果你的需求是让I列直接严格按10,20,30,40,50排列(无需关联J列的值),也可以直接赋值:

d['I'] = [10, 20, 30, 40, 50]

这种方式更直接,根据你的实际场景选择即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:59:43