拆分 url 并在列中从该 URl 获取值

Posted

技术标签:

【中文标题】拆分 url 并在列中从该 URl 获取值【英文标题】:splitting url and getting values from that URl in columns 【发布时间】:2019-04-01 13:30:25 【问题描述】:

嗨,我说我在数据框中有一列 名称提交包含 - mhttps://ckd.pdc.com/pdc/73ba5189-94fd-44aa-88d3-6b36aaa69b02/DDA1610095.zip

我想要一列说 Zest,我想要该列中的值 DDA1610095。

一个新的列说类型并希望在该列中使用 .zip 如何使用 pandas 来做到这一点。

【问题讨论】:

请从您的数据和预期输出中添加一个示例 示例 url - ckd.pdc.com/pdc/73ba5189-94fd-44aa-88d3-6b36aaa69b02/… ,预期 - .zip 在单独的列中,'DDA1610095 在单独的列中 您应该尝试以更好、更规范的方式提出问题,检查发布问题的规则,因为其他人不知道您的问题,因此清晰明确很重要。我试图回答你的问题。不要气馁! 【参考方案1】:

尝试使用str.split 并添加另一个str,以便您可以索引每一行。

data = ['ID' : '1',
    'URL':  'https://ckd.pdc.com/pdc/73ba5189-94fd-44aa-88d3-6b36aaa69b02/DDA1610095.zip']
df = pd.DataFrame(data)



     print(df)
            ID  URL
    0   1   https://ckd.pdc.com/pdc/73ba5189-94fd-44aa-88d...

    #Get the file name and replace zip (probably a more elegant way to do this) 
    df['Zest'] = df.URL.str.split('/').str[-1].str.replace('.zip','')
    #assign the type into the next column. 
    df['Type'] = df.URL.str.split('.').str[-1]
    print(df)

    ID  URL                                                 Zest       Type
0   1   https://ckd.pdc.com/pdc/73ba5189-94fd-44aa-88d...   DDA1610095 zip

【讨论】:

【参考方案2】:

你可以使用str.split从url中提取zip

df 
                                                                           url
0  mhttps://ckd.pdc.com/pdc/73ba5189-94fd-44aa-88d3-6b36aaa69b02/DDA1610095.zip

df['zip'] = df.url.str.split('/',expand=True).T[0] \
        [df.url.str.split('/',expand=True).T.shape[0]-1]

df.T
Out[46]: 
                                                                                0
url  mhttps://ckd.pdc.com/pdc/73ba5189-94fd-44aa-88d3-6b36aaa69b02/DDA1610095.zip
zip                                                                DDA1610095.zip

【讨论】:

以上是关于拆分 url 并在列中从该 URl 获取值的主要内容,如果未能解决你的问题,请参考以下文章

Android:在列中获取最高值

如何使用 Pandas 在列中添加值的超链接?

如何计算某些值在 SQL 表中出现的次数并在列中返回该数字?

将行与标题进行比较,然后在列中插入值并在 VBA 中进行重复检查

插入数据并在列中添加前一行数据

如何将存储在列中的 JSON 数组中的每个元素的行拆分为一行?