[英]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.