使用列中的字符串值向数据帧添加行



我想根据每行的列值向数据帧添加行,以便字符串值 (1:2:3( 将创建一个新列并为该列添加行,如下例所述:

我有这样的数据:

Col1  | Col2
1     | 1:2:3
2     | 4:5

我想将其转换为如下所示:

Col1 | Col2
1    | 1
1    | 2
1    | 3
2    | 4
2    | 5

我知道这可以使用嵌套的 for 循环来完成,但我相信有更好的方法可以做到这一点。

Dosplitandexplode

df=df.assign(Col2=df.Col2.str.split(':')).explode('Col2')
Out[161]: 
Col1 Col2
0     1    1
0     1    2
0     1    3
1     2    4
1     2    5
df = pd.DataFrame({'Col1':[1,2],'Col2':['1:2:3','4:5']})

拆分 Col2 中的值,使它们成为列表并分解。

>>> df['Col2'] = df.apply(lambda x: x['Col2'].split(':'), axis = 1)
>>> df.explode('Col2')
Col1 Col2
0     1    1
0     1    2
0     1    3
1     2    4
1     2    5

最新更新