【问题标题】:Pandas: Efficient way to extract a string into individual columnsPandas:将字符串提取到单个列中的有效方法
【发布时间】:2020-10-06 14:08:27
【问题描述】:

我在名为“Fields”的 pandas 数据框列中有一个以下字符串。 “字段”列是从 csv 文件中提取的单个列。 给定整个数据框中的 1170 行,如果我要将这些值解析为单独的列,则使用 pandas str split 或正则表达式需要 6 分 30 秒。是否有任何有效的方法可以更快地执行此任务?

使用 Pandas 拆分的示例:

for i, row in df.iterrows():
    df['uuid'][i] = row['Arguments'].split("uuid=")[1].split(',')[0]

使用正则表达式的示例:

for i, row in df.iterrows():
    arg = row['Fields']
    
    uuid = re.search('driveUuid=(.+?),', arg).group(1)
    line = re.search('line=(.+?),', arg).group(1)

我有办法解决它,但似乎效率不高。

“字段”列的一个条目

uuid=88c65b1d,line=main,serial=ABC12312,location=top:6,slot=6,floor=top,version=E004

【问题讨论】:

标签: python regex pandas


【解决方案1】:

使用pandas.Series.str.extract

d['uuid'] = d['Fields'].str.extract('uuid=(.+?),')

Henry Yik 在评论中指出

d["Fields"].str.extract('(?:drive)?Uuid=(.+?),line=(.+?),', flags=re.I)

【讨论】:

  • 看看你的样本,你实际上可以做到d["Fields"].str.extract('(?:drive)?Uuid=(.+?),line=(.+?),', flags=re.I)
猜你喜欢
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
相关资源
最近更新 更多