我想根据每行的列值向数据帧添加行,以便字符串值 (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 循环来完成,但我相信有更好的方法可以做到这一点。
Dosplit
andexplode
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