按字符串变量重塑数据帧

时间:2018-01-28 19:40:14

标签: python pandas

我有一个数据框如下

df = pd.DataFrame({'a': ['aaa\nbbb\nccc','ddd\nfff\nggg'], 'b':[1,2]})
df

我想要

     a  b
0   aaa 1
1   bbb 1
2   ccc 1
3   ddd 2
4   fff 2
5   ggg 2

我了解如何使用Rlibrary(reshape)中制作它,但我无法在python

中伪造模拟

1 个答案:

答案 0 :(得分:2)

使用:

df = (df.set_index('b')['a']
        .str.split('\n', expand=True)
        .stack()
        .reset_index(level=1, drop=True)
        .reset_index(name='a')
        .reindex(columns=df.columns))
print (df)
     a  b
0  aaa  1
1  bbb  1
2  ccc  1
3  ddd  2
4  fff  2
5  ggg  2

替代numpy

s = df['a'].str.split('\n')
df = pd.DataFrame({'b':np.repeat(df['b'].values, s.str.len()),
                   'a':np.concatenate(s)})
print (df)
     a  b
0  aaa  1
1  bbb  1
2  ccc  1
3  ddd  2
4  fff  2
5  ggg  2