【问题标题】:How do I remove unwanted parts from strings in a Python DataFrame column如何从 Python DataFrame 列中的字符串中删除不需要的部分
【发布时间】:2022-12-01 05:48:27
【问题描述】:

基于最初由 u/commandlineluser 在 reddit 上建议的脚本,我(作为 Python 新手)试图修改原始代码以删除不需要的部分,这些部分因列值而异。 Python 脚本涉及创建一个包含键和值的字典,并使用带有 str.replace 的列表理解。

(reddit 上 u/commandlineluser 的原始脚本的一部分)

extensions = "dat", "ssp", "dta", "v9", "xlsx"

(下一行是我对上面部分的修改,下面是完整的代码块)

extensions = "dat", "ssp", "dta", "20dta", "u20dta", "f1dta", "f2dta", "v9", "xlsx"

有些结果与我想要的不同。请看下面(我试过的)。

import pandas as pd
import re
data = {"full_url": ['https://meps.ahrq.gov/data_files/pufs/h225/h225dat.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h51bdat.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h47f1dat.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h225/h225ssp.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h220i/h220if1dta.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h220h/h220hv9.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h220e/h220exlsx.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h224/h224xlsx.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h036brr/h36brr20dta.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h036/h36u20dta.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h197i/h197if1dta.zip',
                     'https://meps.ahrq.gov/data_files/pufs/h197i/h197if2dta.zip']}
df = pd.DataFrame(data)
extensions = ["dat", "ssp", "dta", "20dta", "u20dta", "f1dta", "f2dta", "v9", "xlsx"]
replacements = dict.fromkeys((f"{ext}[.]zip$" for ext in extensions), "")
df["file_id"] = df["full_url"].str.split("/").str[-1].replace(replacements, regex=True)
print(df["file_id"])

注释输出

0         h225 (looks good)
1         h51b (looks good)
2        h47f1 (h47 -> desired)
3         h225 (looks good)
4      h220if1 (h220i -> desired)
5        h220h  (looks good)
6        h220e  (looks good)
7         h224 (looks good)
8     h36brr20 (h36brr -> desired)
9       h36u20 (h36 -> desired)
10     h197if1 (h197i -> desired)
11     h197if2 (h197i -> desired)

【问题讨论】:

    标签: python regex


    【解决方案1】:

    我希望我已经理解你的问题了:

    extensions = (
        "dat",
        "ssp",
        "dta",
        "v9",
        "xlsx",
    )
    
    df["file_id"] = df["full_url"].str.extract(
        "/([^/]+?)(?:20|f1|f2|(?<!r)r20|u20)?(?:" + "|".join(extensions) + r").zip"
    )
    
    print(df)
    

    印刷:

                                                             full_url file_id
    0          https://meps.ahrq.gov/data_files/pufs/h225/h225dat.zip    h225
    1               https://meps.ahrq.gov/data_files/pufs/h51bdat.zip    h51b
    2              https://meps.ahrq.gov/data_files/pufs/h47f1dat.zip     h47
    3          https://meps.ahrq.gov/data_files/pufs/h225/h225ssp.zip    h225
    4      https://meps.ahrq.gov/data_files/pufs/h220i/h220if1dta.zip   h220i
    5         https://meps.ahrq.gov/data_files/pufs/h220h/h220hv9.zip   h220h
    6       https://meps.ahrq.gov/data_files/pufs/h220e/h220exlsx.zip   h220e
    7         https://meps.ahrq.gov/data_files/pufs/h224/h224xlsx.zip    h224
    8   https://meps.ahrq.gov/data_files/pufs/h036brr/h36brr20dta.zip  h36brr
    9        https://meps.ahrq.gov/data_files/pufs/h036/h36u20dta.zip     h36
    10     https://meps.ahrq.gov/data_files/pufs/h197i/h197if1dta.zip   h197i
    11     https://meps.ahrq.gov/data_files/pufs/h197i/h197if2dta.zip   h197i
    

    【讨论】:

      猜你喜欢
      • 2012-11-20
      • 1970-01-01
      • 2011-08-13
      • 2022-01-25
      • 2011-02-16
      • 1970-01-01
      相关资源
      最近更新 更多