如何迭代csv文件的行并根据特定列的值进行删除

时间:2016-02-16 09:03:01

标签: python csv pandas jupyter

基本上我需要从csv文件中删除某些行,其中'County'列的值不包含单词county。我正试图将其推回到我的数据帧中,但是,我得到了一个索引错误。

chd = pd.read_csv('some_file.csv')

for index, row in chd.iterrows():
    if 'County' not in row['County']:
        chd = chd.drop(chd.index[[index,3]])

我收到以下错误:

IndexError:索引2959超出了轴1的大小为2909的范围

给出以下两行。我想摆脱第一排。

STATECODE   COUNTYCODE  State   County             Some_Column
1           0           AL      Alabama            9,508
1           0           AL      Alabama County     9,508

我已经尝试了以下似乎不会删除任何行。如果我打印数据框,它将保持不变。

chd = pd.read_csv('some_file.csv')
chd[chd['County'].str.contains('county', case=False)]

1 个答案:

答案 0 :(得分:2)

IIUC然后您可以chd[chd['Count'].str.contains('county', case=False)]删除不包含您的值的行

您收到错误的原因是因为您正在迭代df并删除行,因此您的索引值会变异并且无效

示例:

In [123]:
df = pd.DataFrame({'County':['Alaska', 'Big county', 'Country', 'No county', 'County']})
df[df['County'].str.contains('county', case=False)]

Out[123]:
       County
1  Big county
3   No county
4      County