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