首页 > 解决方案 > 按元素拆分列并使用 pandas 创建新列

问题描述

目标:我想按元素(而不是字符串单元格)拆分一列,并从该划分中创建新列,其中元素是新列的标题,另一列中的其他值组成相应的列。

有没有办法用熊猫做到这一点?提前致谢。

例子:

[IN]:
A    1
A    2
A    6
A   99
B    7
B    8
B   19
B   18

[OUT]:

A   B
1   7
2   8
6  19
99 18

标签: pandaspython-2.7

解决方案


使用Series.str.splitwithGroupBy.cumcount计数器,然后通过DataFrame.set_indexwith重塑Series.unstack

print (df)
      col
0  A    1
1  A    2
2  A    6
3  A   99
4  B    7
5  B    8
6  B   19
7  B   18

df1 = df['col'].str.split(expand=True)
g = df1.groupby(0).cumcount()

df2 = df1.set_index([0, g])[1].unstack(0).rename_axis(None, axis=1)
print (df2)
    A   B
0   1   7
1   2   8
2   6  19
3  99  18

如果 2 列输入数据:

print (df)
  col1  col2
0    A     1
1    A     2
2    A     6
3    A    99
4    B     7
5    B     8
6    B    19
7    B    18

g = df.groupby('col1').cumcount()
df2 = df.set_index(['col1', g])['col2'].unstack(0).rename_axis(None, axis=1)
print (df2)

    A   B
0   1   7
1   2   8
2   6  19
3  99  18

推荐阅读