如何在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
相关产品推荐
相关产品推荐

