根据列子字符串删除记录
Posted
技术标签:
【中文标题】根据列子字符串删除记录【英文标题】: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...
如果还有什么我可以添加到帖子中的,请告诉我。
【问题讨论】:
【参考方案1】:将Series.str.contains
与|
一起用于按位or
与~
的反转掩码:
df[~df[1].str.contains('305-1|305-2')]
或在[]
中指定值:
df[~df[1].str.contains('305-[12]')]
【讨论】:
有效!谢谢@jezrael :) 将在 12 分钟内接受 Ty 更新;使其成为单线以上是关于根据列子字符串删除记录的主要内容,如果未能解决你的问题,请参考以下文章