Python 3.x pandas.series.split(';';,expand=True)和列名
我有一个带有两个字符串列的Pandas数据框,我想在空间上拆分,如下所示:Python 3.x pandas.series.split(';';,expand=True)和列名,python-3.x,pandas,split,Python 3.x,Pandas,Split,我有一个带有两个字符串列的Pandas数据框,我想在空间上拆分,如下所示: df = A B 0.1 0.5 0.01 ... 0.3 0.1 0.4 ... 我想拆分这两列,并为尽可能多的值形成新列,这是拆分后的结果 因此,结果是: df = A1 A2. A3 ... B1
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
这是因为我猜第一个和第二个拆分的列名称重叠
因此,我的问题是如何通过为多个拆分提供列名或后缀来拆分多个列?按拆分的列使用列名:
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)
嗨@jezrael,除了这两列之外,我在数据框中还有其他列。我应该在问题中提到。你的解决方案目前还不如我的有效。在第一种情况下,后缀被添加到所有其他列中。在第二种情况下,所有其他列都将从数据帧中删除。是否有一种方法可以考虑到我的数据帧中还有其他列的事实?@SumitSidana-在第一个解决方案中是好的(最后
)
?没有最后一个)
,所以在所有列中都添加了前缀?