Python 通过字符串变量重塑数据帧
我有一个如下的数据帧Python 通过字符串变量重塑数据帧,python,pandas,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 我知道如何使用库(重塑)在R中实现它,但我在python中找不到类似的用法使用: df = (df.set_index('b')['a'] .str.split(
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
中实现它,但我在python中找不到类似的用法使用:
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
这些字符串最初是如何在数据帧中结束的?我不熟悉R,但除了python内置的split函数外,我不知道还有什么其他方法可以将字符串拆分为单独的数据项。例如:[x.split('\n')表示数据['a']]中的x
.set_index('b')
ah,这就是票证。做得好。