首页 > 解决方案 > pandas.series.split(' ',expand =True) 带列名

问题描述

我有一个带有两个字符串列的 Pandas 数据框,我想在空间上进行拆分,如下所示:

 df =
        A                                   B
        0.1  0.5  0.01 ...                    0.3  0.1  0.4 ...

我想拆分这两个列并为尽可能多的值形成新列,这是拆分的结果。

所以,结果:

df =
       A1      A2.    A3  ...               B1        B2        B3
       0.1     0.5   0.01 ...               0.3       0.1       0.4

目前,我正在做:

 df = df.join(df['A'].str.split(' ', expand = True)
 df = df.join(df['B'].str.split(' ', expand = True)

但是,我收到以下错误:

 columns overlap but no suffix specified

这是因为我猜第一个和第二个拆分重叠的列名?

所以,我的问题是如何通过为多个拆分提供列名或后缀来拆分多个列?

标签: python-3.xpandassplit

解决方案


按拆分列用于DataFrame.add_prefix列名称:

df = df.join(df['A'].str.split(expand = True).add_prefix('A'))
df = df.join(df['B'].str.split(expand = True).add_prefix('B'))
print (df)
              A            B   A0   A1    A2   B0   B1   B2
0  0.1 0.5 0.01  0.3 0.1 0.4  0.1  0.5  0.01  0.3  0.1  0.4

另一个想法是使用列表理解:

cols = ['A','B']
df1 = pd.concat([df[c].str.split(expand=True).add_prefix(c) for c in cols], axis=1)
print (df1)
    A0   A1    A2   B0   B1   B2
0  0.1  0.5  0.01  0.3  0.1  0.4

并添加所有原始列:

df = df.join(df1)

推荐阅读