如何使用 python 删除 .csv 中的特定行?

How to remove specific lines in .csv using python?

我想删除 .csv 文件中的特定行。我是 python 的新手,我不确定如何有条件地删除行。按照下面的示例,我想删除 ***?*abcd 和 ***?*efgh 行。如果第 2 行以 **? 开头,我想删除第 1 行,依此类推。需要注意的是,在实际程序中,还有更多行,例如:

***?*abcd
***?*efgh
***?*ijkl
abcdefg1
abcdefg2
***?*abcd3
abcdefg3

有什么 pandas 代码可以用来解决这个问题吗?任何阅读此内容的链接也将不胜感激。谢谢!

您可以使用布尔值创建一个新列来指定要删除的行。您可以在数据框的列上使用 startswith()shift()fillna() 方法:

df["condition"] = df.iloc[:,0].str.startswith(r"***?").shift(-1).fillna(False)
index 0 condition
0 ***?*abcd true
1 ***?*efgh true
2 ***?*ijkl false
3 abcdefg1 false
4 abcdefg2 true
5 ***?*abcd3 false
6 abcdefg3 false

shift()方法用于在列中向上移动一行,fillna()方法用于填充最后一个为空的值。 您可以使用以下代码删除行:

df = df.drop(df[df["condition"]].index)[0]