簡體   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