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

如何在Pandas中移除DataFrame同行两列等值行并生成新DF(不修改原DF)

问题解答

1. DataFrame行处理实现

这里默认「第2行」指位置上的第二行(Python中DataFrame行索引从0开始,对应iloc[1]),如果是索引值为2的行,替换成loc[2]即可。

代码实现:

import pandas as pd

# 示例DataFrame,替换为你的实际数据
df = pd.DataFrame({'A': [5,6,7], 'B': [6,6,8], 'C': [10,20,30]})

# 定位目标行
target_row = df.iloc[1]

if target_row['A'] == 6 and target_row['B'] == 6:
    # 移除该行,返回新DataFrame(需直接修改原DF则加inplace=True)
    df = df.drop(df.index[1])
else:
    # 提取所有A、B值不等的行,并重命名列为A'、B'
    new_df = df[df['A'] != df['B']].rename(columns={'A': "A'", 'B': "B'"})

如果需求是仅将第2行(当它A≠B时)存入新DF,把else块改成:

new_df = pd.DataFrame([target_row], columns=['A', 'B']).rename(columns={'A': "A'", 'B': "B'"})

2. df.drop_duplicates() 对原DF的影响

  • 默认情况下,df.drop_duplicates()不会修改原DataFrame,它会返回一个去重后的新对象。要直接修改原DF,需添加inplace=True参数。
  • 去重操作只会删除重复行,不会修改保留行的任何列数据——保留行的所有列内容和原DF完全一致,不存在“修改其他列所有行”的情况。

实际示例:

# 原数据
df = pd.DataFrame({'A': [1,1,2], 'B': [3,3,4], 'C': [5,6,7]})
# 去重后得到新DF
deduped_df = df.drop_duplicates()
# deduped_df结果:
#    A  B  C
# 0  1  3  5
# 2  2  4  7
# 原df完全未被修改,保留行的C列值和原数据一致,无任何改动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:23:19