2017-11-14 26 views
2

私は、列の1つに文字列が含まれているDataFrameを持っています。スペースで文字列を分割し、DataTableを変換して、行ごとに1つの単語が含まれるようにしたいと思います。DataFrame内の行への単語の分割

dat = pd.DataFrame(data = {'x' : [1,2], 
          'y' : ['Lorem ipsum dolor sit amet', 
            'consectetur adipiscing elit']}) 
私は以下のようなデータフレームを取得したいと思い

x y 
1 Lorem 
1 ipsum 
... 
2 consectetur 
2 adipiscing 
... 

これを達成するための最良の方法は何ですか?

答えて

1

を使用してlist初とnumpy.concatenateと最後DataFrameコンストラクタと、その後numpy.repeat

s = dat['y'].str.split() 
a = np.repeat(dat['x'].values, s.str.len()) 
b = np.concatenate(s.values) 

df = pd.DataFrame({'x':a,'y':b}) 
print (df) 
    x   y 
0 1  Lorem 
1 1  ipsum 
2 1  dolor 
3 1   sit 
4 1   amet 
5 2 consectetur 
6 2 adipiscing 
7 2   elit 
1

STR listに、我々はのために使うsplitstack

dat.y=dat.y.str.split(' ') 
dat.set_index('x').y.apply(pd.Series).stack().reset_index().\ 
     drop('level_1',1).rename(columns={0:'y'}) 
Out[484]: 
    x   y 
0 1  Lorem 
1 1  ipsum 
2 1  dolor 
3 1   sit 
4 1   amet 
5 2 consectetur 
6 2 adipiscing 
7 2   elit 
関連する問題