2017-10-24 2 views
0

여러 열로 팬더 dataframe 열에서 가변 길이 데이터를 분할해야하는 것은이 추천했습니다 :내가 2 열 dataframe이

ITEM  REFNUMS 
1 00000299 0036701923024762922029229294652954429569295832... 
2 00000655 NaN 
24 00001791 00016027123076000158004563065131972 
25 00001805 00016027123076000158004563065131972 
26 00001813 00016027123076000158004563065131972 
27 00001821 00016027123076000158004563065131972 
28 00001937 0142530521316303164702509000510012201310027820... 

내가 나눌 부분으로 REFNUMS 열을 분할하고 기존 dataframe 경우에 추가하고 싶습니다 행 인덱스를 유지하고 ITEM #을 일치시켜야 할 때 가능합니다. REFNUMS의 데이터는 예를 들어 행 1이어서

0   NaN 
1  78.0 
2   NaN 

이 작업을 수행하는 방법에 대한 제안을 음미 제

data_len = (data['REFNUMS'].str.len())/5 

의 = 78 개 세트하므로, 5하지 NaN으로 나누어지는 길이 .

+2

이 예상 출력 무엇입니까? –

답변

1

IIUC, 당신은, 5 자리의 그룹을 얻을 열을 정리 한 다음 가입 str.extractall를 사용할 수 있습니다

In [168]: r = df.REFNUMS.str.extractall("(\d{1,5})").unstack() 

In [169]: r.columns = r.columns.droplevel(0) 

In [170]: df.join(r) 
Out[170]: 
    ITEM           REFNUMS  0  1  2  3  4  5  6  7  8  9 
1 299 0036701923024762922029229294652954429569295832... 00367 01923 02476 29220 29229 29465 29544 29569 29583  2 
2 655            NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
24 1791    00016027123076000158004563065131972 00016 02712 30760 00158 00456 30651 31972 None None None 
25 1805    00016027123076000158004563065131972 00016 02712 30760 00158 00456 30651 31972 None None None 
26 1813    00016027123076000158004563065131972 00016 02712 30760 00158 00456 30651 31972 None None None 
27 1821    00016027123076000158004563065131972 00016 02712 30760 00158 00456 30651 31972 None None None 
28 1937 0142530521316303164702509000510012201310027820... 01425 30521 31630 31647 02509 00051 00122 01310 02782  0 
+0

굉장하고 환상적입니다. 나는 추출물을 결코 고려하지 않았다. – Nexxsys

관련 문제