【问题标题】:Drop records based on column sub-string根据列子字符串删除记录
【发布时间】:2022-01-01 20:02:03
【问题描述】:

目标:根据第 2 列 index 1 子字符串从 Dataframe 中删除记录。

我试过了:

df = df[df[1] != '305-1']
df = df[df[1] != '305-2']

但是,这是一个绝对值,而不是子字符串。

df:

    1   2   3
0   Emissions   305-1~GHG emissions in metric tons of CO2e~Gro...   Emissions for Gross direct (Scope 1) GHG emiss...
1   Emissions   305-3~GHG emissions in metric tons of CO2e~Bio...   Emissions for Biogenic CO2 emissions was 14681...
2   Emissions   305-2~Direct (Scope 1) GHG emissions by gas~CO2 Emissions for CO2 was 107973 tons in year 2014...
3   Emissions   305-2~Direct (Scope 1) GHG emissions by gas~N20 Emissions for N20 was 91661 tons in year 2014,...
4   Emissions   305-3~Direct (Scope 1) GHG emissions by gas~HFCs    Emissions for HFCs was 31744 tons in year 2014...

期望的输出df:

1   Emissions   305-3~GHG emissions in metric tons of CO2e~Bio...   Emissions for Biogenic CO2 emissions was 14681...
4   Emissions   305-3~Direct (Scope 1) GHG emissions by gas~HFCs    Emissions for HFCs was 31744 tons in year 2014...

如果还有什么我可以添加到帖子中的,请告诉我。

【问题讨论】:

    标签: python pandas string dataframe


    【解决方案1】:

    将Series.str.contains 与| 一起用于按位or 与~ 的反转掩码:

    df[~df[1].str.contains('305-1|305-2')]
    

    或在[] 中指定值:

    df[~df[1].str.contains('305-[12]')]
    

    【讨论】:

    • 有效!谢谢@jezrael :) 将在 12 分钟内接受
    • Ty 更新;使其成为单线
    猜你喜欢
    • 2023-04-09
    • 2019-07-20
    • 2016-11-17
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多