Python Pandas:将字符串提取到单个列中的有效方法
在名为“Fields”的数据框列中有一个字符串。“字段”列是从csv文件中提取的单列。 给定整个数据帧中的1170行,如果要将这些值解析为单个列,使用split或regex需要6分30秒。有没有什么有效的方法可以更快地完成这项任务 使用熊猫分割的示例:Python Pandas:将字符串提取到单个列中的有效方法,python,regex,pandas,Python,Regex,Pandas,在名为“Fields”的数据框列中有一个字符串。“字段”列是从csv文件中提取的单列。 给定整个数据帧中的1170行,如果要将这些值解析为单个列,使用split或regex需要6分30秒。有没有什么有效的方法可以更快地完成这项任务 使用熊猫分割的示例: for i, row in df.iterrows(): df['uuid'][i] = row['Arguments'].split("uuid=")[1].split(',')[0] 使用正则表达式的示例: fo
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,线路=main,串行=ABC12312,位置=top:6,插槽=6,地板=top,版本=E004
使用
正如在评论中提到的
d["Fields"].str.extract('(?:drive)?Uuid=(.+?),line=(.+?),', flags=re.I)
试试看。@HenryYik,提取要快得多。感谢查看您的示例,您实际上可以执行
d[“Fields”].str.extract('(?:drive)?Uuid=(.+?),line=(.+?),',flags=re.I)
。
d["Fields"].str.extract('(?:drive)?Uuid=(.+?),line=(.+?),', flags=re.I)