将行拆分为新行并从其他列添加相应的匹配值

2024-09-30 22:21:53 发布

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

我有一个像下面这样的数据场

  data = pd.DataFrame({'Name': ['CTA15;CTA16;CAR;', 'AC007;AC008;GOO7;G008;F009', 'AC09;BC09;C09;V09;B0P', 'UF09;GF09;HF09;MN08'],  
    'Sample':['JAK_1', 'TOR2', 'Gilo', 'ALR']})
data

                Name    Sample
0   CTA15;CTA16;CAR;           JAK_1
1   AC007;AC008;GOO7;G008;F009  TOR2
2   AC09;BC09;C09;V09;B0P       Gilo
3   UF09;GF09;HF09;MN08         ALR

我需要将列名和拆分成一个新行,并在column Sample中添加值相应的最后,我的目标是有一个这样的数据帧

^{pr2}$

我需要将“;”拆分到新行中,并将Sample column中的值相应地添加到每个行中。在


Tags: 数据samplenamedatacarcta15c09f009
1条回答
网友
1楼 · 发布于 2024-09-30 22:21:53

您可以使用^{}来删除;,在某些字符串的开头使用^{}表示lists,然后为其中的length获取{a3}。在

上一次创建新的DataFrame,由constructor使用^{}^{}创建:

vals = data['Name'].str.strip(';').str.split(';')
l = vals.str.len()
df = pd.DataFrame({'Sample':np.repeat(data['Sample'].values, l), 
                   'Name':np.concatenate(vals.values)})
print (df)
     Name Sample
0   CTA15  JAK_1
1   CTA16  JAK_1
2     CAR  JAK_1
3   AC007   TOR2
4   AC008   TOR2
5    GOO7   TOR2
6    G008   TOR2
7    F009   TOR2
8    AC09   Gilo
9    BC09   Gilo
10    C09   Gilo
11    V09   Gilo
12    B0P   Gilo
13   UF09    ALR
14   GF09    ALR
15   HF09    ALR
16   MN08    ALR

替代方案:

^{pr2}$

相关问题 更多 >