繁体   English   中英

Python Pandas 如果条件删除行

[英]Python Pandas Delete Row If Condition

我是 Python 的初学者。 我已将 CSV 文件导入 Python。 它是 1618 行 x 1 列。 本质上,我想在整个数据框中保留 2 行重复出现的数据。 我想通过删除所有不包含以下文本的行来做到这一点:

1) 以空格和行首的 9 个后续数字开头(例如:“123456789”)

2) 有一行包含以下任何数字(“2000”、“2001”、...、“2020”)

所以基本上,我会留下两种类型的行,但是它们出现在数据框中的次数:

1) 后面有一个空格和 9 位数字

2) 任何包含“2000”的行,一直到“2020”

写这篇文章的任何帮助都将是惊人的,非常感谢。 我希望学习更多并能够独立完成所有这些工作。

更新:嘿,谢谢大家的帮助......我将提供一些从 CSV 打印的行以进行澄清:

11 XXXXXX...

12 名称:ABC

13 --------------------------------------------------...

14 天...

15 123456789 - -.0000...

16 ------------------------------------------

17 G52 0000000000000000000000...

18 G53 XXX 09132017...

注意:请忽略带有 X 和破折号的奇怪线条......数据来自另一个程序。 第 18 行包含“2017”年可以找到的日期,第 15 行包含起始空格和 9 位数字。 如果有更多信息有帮助,请随时告诉我。 谢谢!

这是两个match的条件过滤器, contains

con1=df['col1'].str.match('(\s*)?(\d{9})')
con2=df['col1'].str.contains('2000|2001')
yourdf=df[~(con1|con2)]

尝试:

df=df.loc[df["x"].str.match(r"^(\s*)((\d{9})|(.*20[0-2]\d.*))$")]

x是您的输入列, df是您的 dataframe。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM