当字符串类型单元格的右边字符与条件不匹配时,在pandas df中删除行

问题描述 投票:0回答:1

我正在研究一个包含每个美国州和县的人口统计数据的数据框。

FIPS    State   Area_Name   CENSUS_2010_POP ESTIMATES_BASE_2010 ...
01000   AL  Alabama         4779736         4780131             ...    
01001   AL  Autauga County  54571           54571               ...      
01003   AL  Baldwin County  182265          182265              ...
01005   AL  Barbour County  27457           27457               ...

...     ... ...             ...             ...                 ...

我想放弃关于各县的所有线路,以便只保留关于美国各州的线路(确实有很多线路要放弃!)。我的想法是专注于FIPS列,并且只保留以'000'结尾的FIPS,这对应于状态。将FIPS转换为字符串后,我尝试了以下方法:

for k in df.index:
    if df.iloc[k,0][-3:] != '000':
        df=df.drop(df.index[k])

我收到以下错误:single positional indexer is out-of-bounds

python string pandas if-statement
1个回答
0
投票

根据布尔索引选择行,通过str切片比较得到的布尔值

df[df['FIPS'].astype(str).str[-3:] == '000']


  FIPS State Area_Name  CENSUS_2010_POP  ESTIMATES_BASE_2010  ...
0  1000    AL   Alabama          4779736              4780131  ...
© www.soinside.com 2019 - 2024. All rights reserved.