2017-02-14 13 views
1

に重複するかもしれない任意の長さのセットの列を持つパンダのデータフレームがあります:このデータフレームから開梱データフレーム値で設定され、行

n = np.nan 
stack1 = pd.DataFrame.from_dict( 
     {'letter1': ['a','b','c','y'], 
     'letter2': [ 'o','p', 'q', 'y'], 
     'overlap': [ {'v'},{'c'}, {'c'}, {'v', 'c'}] 
     }) 
stack1.reset_index(inplace=True, drop=True) 

enter image description here

は、どのように私は内容を解凍することができますそれらのアンパックされた要素のそれぞれから新しい行を作成しますか?解決策がリストやタプルのような他のコンテナでもうまくいけばいいでしょう。

望ましい結果:

enter image description here

答えて

1

これを試してみてください:

In [32]: col_to_unpack = 'overlap' 

In [33]: df = stack1.copy() 

In [34]: pd.DataFrame({ 
    ...:  col:np.repeat(df[col].values, df[col_to_unpack].str.len()) 
    ...:  for col in df.columns.difference([col_to_unpack]) 
    ...: }).assign(**{col_to_unpack:np.concatenate(df[col_to_unpack].map(list).values)})[df.columns.tolist()] 
    ...: 
Out[34]: 
    letter1 letter2 overlap 
0  a  o  v 
1  b  p  c 
2  c  q  c 
3  y  y  c 
4  y  y  v 
関連する問題