我有一个数据框如下
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
我了解如何使用R
在library(reshape)
中制作它,但我无法在python
答案 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