我的数据类型是pandas.core.series.Series。有两列。我想从其中拆分一个

V1      V2
1000    1 2 3
1001    0 2




1000 \t 1 \t 2 \t 3
1001 \t 0 \t 2


我试过的

1.
list(result.columns.values)
result[list(result.columns.values)].str.split('  ').replace('/t')

2.
result['labels'].split('  ', expand=True)

3.
c = str(result['labels'])
c.split(' ')


我尝试了其他方法,例如使用awk或正则表达式。不幸的是,我不敢相信我没有在doc或stackoverflow上找到答案。

注意:变量数量增加!

最佳答案

如果列string的类型是astype,然后是V1int,则可以同时合并两个列并通过replace强制转换为str.replace

print df
     V1     V2
0  1000  1 2 3
1  1001    0 2

s = df['V1'].astype(str) + ' '  + df['V2']
print s.replace('\s+', r'\t')
0    1000 1 2 3
1      1001 0 2
dtype: object

print s.str.replace('\s+', r'\t')
0    1000\t1\t2\t3
1       1001\t0\t2
dtype: object


也许您需要先split然后再join '\t'

print df
         V2
V1
1000  1 2 3
1001    0 2

df1 = df['V2'].str.split('\s+', expand=True)
print df1
      0  1     2
V1
1000  1  2     3
1001  0  2  None

df1 = df1.fillna('').reset_index()
df1['V1'] = df1['V1'].astype(str)

df1 = df1.T.apply('\t'.join)
df1 = df1.str.strip('\t')
print df1
0    1000\t1\t2\t3
1       1001\t0\t2
dtype: object

10-07 22:29