基于regex的Pandas-concat数据帧行

2024-04-19 06:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

概述

根据下面的示例图像,我正在尝试基于以下regex对dataframe行进行concat:

for row in df.index:
    if True in df.loc[row].str.contains("group-object").tolist():  
        l = df.loc[row].tolist()
        for i in l:
            match = re.search(r" group-object (\S+)", i)
            if match is not None:
                print (row,match.group(1))

输出:

^{pr2}$

regex正在查找字符串group-object,match capture组给我group-object名称。然后我需要对df索引使用这个名称,并将包含捕获名称的行合并到当前行的末尾。在

示例:

在示例图像中,我们看到行索引object-group network prt-apps2col_1包含字符串group-object prt-apps。这是指上面索引为object-group network prt-apps的行。我需要将这一行(如图中突出显示的那样)合并到行尾索引object-group network prt-apps2。在

对于正则表达式有匹配项的任何其他行也一样。在

example

我已经设法做到了这一点,但很难看到如何使用concat或类似产品来实现这一点。在

数据:

df.to_dict()

dfData = {'col_0': {'object-group network prt-apps': ' network-object object fake-1 host 10.0.0.1',
  'object-group network prt-apps2': ' network-object object fake4 host 10.0.0.4',
  'object-group network prt-apps3': ' network-object object fake5 host 10.0.0.5'},
 'col_1': {'object-group network prt-apps': ' network-object object fake2 host 10.0.0.2 ',
  'object-group network prt-apps2': ' group-object prt-apps',
  'object-group network prt-apps3': ' group-object prt-apps2'},
 'col_2': {'object-group network prt-apps': ' network-object object fake3 host 10.0.0.0 255.255.255.0',
  'object-group network prt-apps2': '-',
  'object-group network prt-apps3': '-'},
 'col_3': {'object-group network prt-apps': ' network-object object fake121',
  'object-group network prt-apps2': '-',
  'object-group network prt-apps3': '-'}}

df = pd.DataFrame(dfData)

期望输出:

我会非常乐意得到这样的输出,它遵循我上面指定的模式。在

enter image description here

如果可以将数据移到左边,以填充当前任何单元格中的-,但不是必需的,那就更好了。最下面的一行是最长的,因为它有嵌套的对象,object-group network prt-apps3包含{},而后者又包含{}。在


Tags: appsin名称host示例dfobjectmatch