2013-09-23 3 views
1

제발 시작 프로그래머이자 시작 python/pandas 사용자입니다. 나는 행동 과학자이며 팬더를 사용하여 데이터를 처리하고 구성하는 방법을 배웁니다. 결과적으로이 중 일부는 완전히 분명한 것처럼 보일 수 있으며 포럼의 가치가없는 질문처럼 보일 수 있습니다. 관용을 가져주세요! 나에게 이것은 일의 날이며, 나는이 질문에 대한 답을 이미 알아 내려고 노력하면서 실제로 시간을 보냈다. 모든 도움을 미리 감사드립니다.두 개의 데이터 프레임에서 두 개의 열을 결합합니다. 동일한 색인이지만 길이가 다릅니다.

내 데이터는 다음과 같습니다. "실제"액터와 수취인 데이터는 항상 5 자리 숫자이며 "동작"데이터는 항상 문자 코드입니다. 내 문제는 필자가 Actor 열에 "date"나 "s"와 같은 마커로 표시되는 특수 줄에도이 형식을 사용한다는 것이다. 이 마커는 "행동"열에 실제 행동 데이터가 아닌 특수 유형의 데이터가 있음을 나타냅니다. 따라서 액터 열의 마커를 NaN 값으로 바꾸고 비헤이비어 열의 특수 데이터를 가져 와서 다른 열 (이 예에서는 비어있는 활동 열)에 넣으려고합니다.

follow Activity Actor Behavior Recipient1 
0 1   NaN   date  2.1.3.2012 NaN 
1 1   NaN   s  ss.hx  NaN 
2 1   NaN   50505 vo   51608 
3 1   NaN   51608 vr   50505 
4 1   NaN   s  ss.he  NaN 

지금까지 나는 새로운 dataframe에 "S"라인을 선택하는 팬더의 일부 코드를 작성했습니다 : 나는이 dataframe의 행동 칼럼을 통해 복사 한

def get_act_line(group): 
    return group.ix[(group.Actor == 's')] 

result = trimdata.groupby('follow').apply(get_act_line) 

result.Activity = result.Behavior 
result.Behavior = np.nan 
result.Actor = np.nan 
result.head() 

그래서 내 새로운 dataframe는 다음과 같습니다 :

,691,363 활동 열, 그리고 NaN이와 함께 영화 배우와 행동 값을 대체210
follow   follow Activity Actor Behavior Recipient1 
1  2  1   ss.hx  NaN  NaN   NaN 
     34 1   hf.xa  NaN  NaN   f.53702 
     74 1   hf.fe  NaN  NaN   NaN 
10  1287 10  ss.hf  NaN  NaN   db 
     1335 10  fe   NaN  NaN   db 

내가 지금하고 싶은 것은이 데이터 프레임을 원본과 결합하여 선택한 행의 모든 ​​값을 대체하지만 원래 데이터 프레임의 다른 행에 대한 값을 유지하는 것입니다.

이것은 명백한 해결책이있는 간단한 질문처럼 보일 수도 있고, 아니면 처음부터 잘못 생각한 것일 수도 있습니다!

저는 Wes McKinney의 저서를 통해 작업했습니다. 다양한 유형의 병합, 매핑, 결합, 변형, 병합 등에 대한 설명서를 읽었습니다. 포럼을 찾아 보았고 저에게 도움이되는 답을 찾지 못했습니다. 이것을 알아 내십시오. 귀하의 도움은 대단히 감사하겠습니다. (자세한 최적 또는 우아한 방법이있을 수 있지만)이 작업을 수행 할 수

답변

2

한 가지 방법은 다음과 같습니다

mask = (df['Actor']=='s') 
df['Activity'] = df[mask]['Behavior'] 
df.ix[mask, 'Behavior'] = np.nan 

안양 당신의 결과 dataframe에 해당입니다. 이것은 반환해야합니다 (내 열 순서는 약간 다릅니다) :

Activity Actor    Behavior Recipient1 follow 
0  NaN date 2013-04-01 00:00:00   NaN  1 
1 ss.hx NaN    ss.hx   NaN  1 
2  NaN 50505     vo  51608  1 
3  NaN 51608     vr  50505  1 
4 ss.he NaN    ss.hx   NaN  1 

참고 : 다른 STO 포스트에서 df.ix

  • 설명.
관련 문제