Sd *_*unk 2 python python-3.x pandas
我不知道str.split是否可以执行该过程.但是,例如,我在数据帧df中有以下列:
Column
0 a-b-c-d-e-f-g-h-i-j
1 a-a-b-b-c-c
2 a-a-b-b
Run Code Online (Sandbox Code Playgroud)
我知道,如果我这样做
df['Column'].str.split('-', expand=True)
Run Code Online (Sandbox Code Playgroud)
然后我将得到如下结果:
0 1 2 3 4 5 6 7 8 9
0 a b c d e f g h i j
1 a a b b c c None None None None
2 a a b b None None None None None None
Run Code Online (Sandbox Code Playgroud)
根据分割完成时元素的最大数量创建多个列.
我想知道是否可以总是有10列,无论元素的数量是多少,只要它在0到10之间,并在这里用'None'填充剩余的列.
所以会改变以下列:
Column
0 a-b-c-d-e-f-g-h
1 a-a-b-b-c-c
2 a-a-b-b
Run Code Online (Sandbox Code Playgroud)
成:
0 1 2 3 4 5 6 7 8 9
0 a b c d e f g h None None
1 a a b b c c None None None None
2 a a b b None None None None None None
Run Code Online (Sandbox Code Playgroud)
reindex之后
通过user3483203改进了实现
df.Column.str.split('-', expand=True).reindex(columns=range(10))
0 1 2 3 4 5 6 7 8 9
0 a b c d e f g h i j
1 a a b b c c None None None None
2 a a b b None None None None None None
Run Code Online (Sandbox Code Playgroud)
一种理解方法
pd.DataFrame([
(lambda l: l + [None] * (10 - len(l)))(x.split('-'))
for x in df.Column
], df.index)
0 1 2 3 4 5 6 7 8 9
0 a b c d e f g h None None
1 a a b b c c None None None None
2 a a b b None None None None None None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |