【问题标题】:How to extract a word from a link in pandas如何从熊猫的链接中提取单词
【发布时间】:2021-03-04 07:32:11
【问题描述】:

我需要一个从 HTTPs 链接中提取单词的最佳代码,这将是一个创建的新列,请告诉我最佳和快速的方法

代码:

df['new_column'] = url
final_df['currency'] = final_df['currency'].str.replace(r'[a-z]*://[a-z]*.[a-z]*.[a-z]*/[a-z]*/', 
'').str.strip()



   

新栏目

   https://www.investing.com/currencies/usd-jpy-historical-data
   https://www.investing.com/currencies/usd-jpy-historical-data
   https://www.investing.com/currencies/usd-jpy-historical-data
   https://www.investing.com/currencies/usd-inr-historical-data
   https://www.investing.com/currencies/usd-inr-historical-data

   

结果

   usd-jpy
   usd-jpy
   usd-jpy
   usd-inr
   usd-inr



     

【问题讨论】:

  • 提取的逻辑是什么?
  • 我只需要链接中的usd-jpy、usd-inr。

标签: python-3.x regex pandas dataframe


【解决方案1】:

Series.str.splitSeries.str.join 一起使用:

df['new_column'].str.split('/').str[-1].str.split('-').str[:2].str.join('-')

输出:

usd-jpy
usd-jpy
usd-jpy
usd-inr
usd-inr

【讨论】:

  • 谢谢,它成功了。您能否也解释一下您的代码,这将非常有帮助
  • 第一个 split new_column on / 并选择最后一个值。然后拆分- 上的最后一个值并选择前两个值并将它们与- 连接起来。
  • @anaghas 1.) df['new_column'].str.split('/') 将字符串拆分为 ['investing.com', 'currencies', 'usd-jpy-historical-data']。 2.) str[-1].str.split('-') 从上面的列表中获取最后一个元素,即 usd-jpy-historical-data 并将其拆分为连字符。现在您得到 ['usd', 'jpy', 'historical', 'data'] 3.) str[:2].str.join('-') 在第二步中从列表中获取前 2 个元素,即 usd 和 jpy 并使用连字符将它们连接起来,从而为您提供所需的结果,即 usd-jpy
【解决方案2】:

您可以使用带有pandas.Series.str.extract 的正则表达式:

>>> df["new_column"].str.extract("(?:.*/)*([a-z]*-[a-z]*)")

0  usd-jpy
1  usd-jpy
2  usd-jpy
3  usd-inr
4  usd-inr

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 2021-01-10
    • 1970-01-01
    • 2021-05-08
    • 2019-12-31
    • 1970-01-01
    • 2021-11-10
    • 2022-01-21
    • 2020-08-21
    相关资源
    最近更新 更多