如何使用 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]
我想删除 .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]