首页 > 解决方案 > 使用标记从列中解析多个子字符串并将它们放入新列中

问题描述

我创建了一个名为LogEntry的数据框列,它从我感兴趣的文本文件中提取所有日志条目(使用 str.contains)。

我完全坚持寻找从 LogEntry 列解析值的最佳方法(或任何方法)并将它们放入新列中,例如:position_nm、target_nm、position_error_nm、pump_dist 和 pump_startpos,以便输出数据帧看起来像这:

输出示例

我尝试使用 re.search,但 position_nm 列仍然是空白的。

 try:
     df['position_nm'] = df.LogEntry.re.search('position_nm":(.+?),' df['LogEntry']).group(1)
 except AttributeError:
     df['position_nm'] = ''

任何帮助我继续前进将不胜感激。我是编码新手。谢谢!

标签: pythonpandasparsing

解决方案


您可以为每个功能编写如下函数,然后将 lambda 函数应用于数据帧。

def position_nm(sample):
    sdict = '{'+sample.split('{')[1]
    sdict = json.loads(sdict)
    return sdict['position_nm']

df['position_nm'] = df['LogEntry'].apply(lambda x : position_nm(x))

推荐阅读