开发者社区> 问答> 正文

在Pandas中删除重复的列之一

我正在尝试仅删除列“ A”的第一次或最后一次出现。我怎么做?下面的MWE会删除A的两列。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCA'))
print (df)
df.drop(df.columns[0], axis=1, inplace=True)
print (df)

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 17:09:12 411 0
1 条回答
写回答
取消 提交回答
  • 想法是为匹配A和重复的-第一个或最后一个值创建掩码,并通过DataFrame.loc的布尔索引`进行过滤:

    np.random.seed(123)
    df = pd.DataFrame(np.random.randint(0,100,size=(5, 4)), columns=list('ABCA'))
    print (df)
        A   B   C   A
    0  66  92  98  17
    1  83  57  86  97
    2  96  47  73  32
    3  46  96  25  83
    4  78  36  96  80
    
    m1 = df.columns == 'A'
    m2 = df.columns.duplicated()
    m3 = df.columns.duplicated(keep='last')
    
    df1 = df.loc[:, (m1 & m2) | ~m1]
    print (df1)
       B   C   A
    0  92  98  17
    1  57  86  97
    2  47  73  32
    3  96  25  83
    4  36  96  80
    
    df2 = df.loc[:, (m1 & m3) | ~m1]
    print (df2)
    
        A   B   C
    0  66  92  98
    1  83  57  86
    2  96  47  73
    3  46  96  25
    4  78  36  96
    

    但是,如果只需要第一个重复的列:

    df3 = df.loc[:, ~m2]
    #last duplicated
    df4 = df.loc[:, ~m3]
    

    回答来源:stackoverflow

    2020-03-23 17:09:17
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
中文:即学即用的Pandas入门与时间序列分析 立即下载
即学即用的Pandas入门与时间序列分析 立即下载
低代码开发师(初级)实战教程 立即下载