【问题标题】:Grab all but one element in pandas series抓住熊猫系列中除一个元素外的所有元素
【发布时间】:2014-12-16 21:23:00
【问题描述】:

我有一个pandas Series,它有许多由字符串索引的值。除了一个,我想把它们都抓起来。

my_series.ix['intercept'] #<--- this has the value I don't want

有没有办法获取my_series 中的所有内容,除了my_series.ix['intercept'] 返回的内容?

【问题讨论】:

    标签: python pandas series


    【解决方案1】:

    您可以构造一个mask -- 一个布尔数组,它是 True,其中 Series 索引等于特定值:

    mask = my_series.index.isin(['intercept'])
    

    然后您可以以典型方式选择剩余的行:

    my_series.loc[~mask]
    

    请注意,如果该值多次出现在索引中,则所有具有相同索引的行都将被删除:

    my_series = pd.Series([10,20,30,40], index=['foo','intercept','baz','intercept'])
    # foo          10
    # intercept    20
    # baz          30
    # intercept    40
    # dtype: int64
    
    mask = my_series.index.isin(['intercept'])
    print(my_series.loc[~mask])
    

    产量

    foo    10
    baz    30
    dtype: int64
    

    【讨论】:

    • 快速澄清这个问题,这会删除作为该字符串文字的超集或子集的索引吗?例如,它会删除索引为“int”的条目还是索引为“intercept_1”的条目?对于我目前的特殊情况,这无关紧要,所以我只是出于好奇而要求跟进
    • 不,不会。 (不过我鼓励您尝试一下;这是最好的学习方式。)请记住,索引可能包含字符串以外的值,因此 isin 只是检查成员资格(相等性)而不做任何特定于字符串的操作,例如检查是否一个字符串包含在另一个字符串中。
    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2012-05-14
    相关资源
    最近更新 更多