2016-08-19 3 views
2

나는 다음과 같은 데이터 프레임이 :어떻게 파이썬 dataframe에 다른 COL에 몇 가지 값을 잘라 얻을

 pop state year  value1 value2 value3 
    0 1.8 Ohio 2000001  3   3   1 
    1 1.9 Ohio 2001001  3   3   1 
    2 3.9 Nevada 2002   3   3   1 
    3 2.9 Nevada 2001003  3   3   1 
    4 2.0 Nevada 2002004  3   3   1 

내가 값 1에서 세 개의 세그먼트로 안양 [ '년'] 잘라낼을, 값 2, 값 3. 값 길이가 충분하지 않으면 내가 그래서 나는 다음과 같은 데이터 프레임을 얻으려면 0으로 채울 수 :

 pop state year  value1 value2 value3 
    0 1.8 Ohio 2000001  200  000  1 
    1 1.9 Ohio 2001001  200  100  1 
    2 3.9 Nevada 2002   200  2   0 
    3 2.9 Nevada 2001003  200  100  3 
    4 2.0 Nevada 2002004  200  200  4 

또한 경우 DF [ '값 1'], [ '값 2'] DF, df [ 'value3']는 다른 값을가집니다. 파이썬 판다에서 어떻게 할 수 있습니까?

답변

2

year을 캐스팅하여 문자열 값을 취하고 str.extract을 입력하면 3 열의 값에 해당하는 특정 조각을 추출 할 수 있습니다.

그런 다음 빈 문자열을 0으로 바꾸면 원하는 결과를 얻을 수 있습니다.

In [3]: df['year'] = df['year'].astype(str) 

In [4]: df.ix[:,3:6] = df['year'].str.extract('(?P<value1>\d{0,3})(?P<value2>\d{0,3})(?P<value3>\d{0,1})') 

In [5]: df.replace('', 0, inplace=True) 

In [6]: df 
Out[6]: 
    pop state  year value1 value2 value3 
0 1.8 Ohio 2000001 200 000  1 
1 1.9 Ohio 2001001 200 100  1 
2 3.9 Nevada  2002 200  2  0 
3 2.9 Nevada 2001003 200 100  3 
4 2.0 Nevada 2002004 200 200  4 
+1

좋은 해결책, +1 – jezrael

+0

안녕하세요, Nickil, 질문이 있습니다. value1, value2 ..... value100과 같이 많은 col로 데이터 프레임을 가지고 있다면. df.ix [:, 3 : 6] = df [ 'year']. str.extract ('(? P \ d {0,3}) (? P \ d {0,3}) (? P \ d {0,1}) '). 내가 어떻게 해? 고마워 ~ – Chauncey

관련 문제