在匹配列名后串联列

2024-10-16 17:23:18 发布

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

我想连接数据集的两个相似命名列的集合。列如下所示:

URO_Brand1_Target,URO_Brand1,URO_Brand2_Target,URO_Brand2,URO_Brand3_Target

这些数据在数据集中没有特定的顺序。现在基于这样一个条件,如果列名“URO\u Brand1”包含在列名“URO\u Brand1\u Target”中,我必须连接这两个列。对于所有类似的列,我必须这样做。你知道吗

像这样:

URO_Brand1_Target URO_Brand1   Concatenate(URO_Brand1, URO_Brand1_Target)
     95%      CIG0002069   CIG0002069,95%

Tags: 数据target顺序条件命名concatenatebrand1brand2
1条回答
网友
1楼 · 发布于 2024-10-16 17:23:18

使用pandas.DataFrame.groupby。假设您有一个df

  URO_Brand1_Target  URO_Brand1 URO_Brand2_Target  URO_Brand2
0               95%  something1               90%  something2

使用groupby遍历组:

for k, d in df.groupby(df.columns.str[:10], axis=1):
    tmp = d.sort_index(1)
    df['Concatenate(%s)' % ', '.join(d.columns)] = tmp.apply(','.join, 1)

输出:

  URO_Brand1_Target  URO_Brand1 URO_Brand2_Target  URO_Brand2  \
0               95%  something1               90%  something2   

  Concatenate(URO_Brand1_Target, URO_Brand1)  \
0                             something1,95%   

  Concatenate(URO_Brand2_Target, URO_Brand2)  
0                             something2,90%  

相关问题 更多 >