2012-10-25 15 views
5

저는 유기체를 나타내는 두 개의 열이있는 데이터 프레임을 가지고 있습니다. 그들은 ORG1 및 ORG2라고합니다. 해당 색인 값에 대해 ORG2의 값을 ORG1로 이동하려고합니다.다른 열 값을 기반으로 pandas DataFrame 열 값을 변경하십시오.

ORG1이 'A'이고 ORG2가 'B'인 경우 ORG1이 ORG2에서 'B'값을 가져 오도록하고 싶습니다. 다음과 같이

나는 이미 내가 이동하려는 ORG2 생물의 인덱스를 식별하는 작업을 시작했습니다 :

def move_org2(x): 
    org2_matches = Series(x.ORG2.str.count("ESBL")) 
    return x.ix[org2_matches == 1] 

org2_DF = move_org2(DF) 

org2_DF.ORG2.index 

무엇 ORG2 대응에 값 ORG1 값을 변경하려면이 옵션을 사용하는 가장 좋은 방법은 .loc를 사용하여 인덱스

답변

14
In [13]: df 
Out[13]: 
    ORG1 ORG2 
0 A ESBL 
1 B  P 
2 C  Q 
3 D  R 
4 E ESBL 

In [14]: cond = df.ORG2 == 'ESBL' 

In [15]: df.ORG1[cond] = df.ORG2[cond] 

In [16]: df 
Out[16]: 
    ORG1 ORG2 
0 ESBL ESBL 
1  B  P 
2  C  Q 
3  D  R 
4 ESBL ESBL 
+0

감사를 사용할 수 있습니다. – John

1

, 당신은 할 것

In [2008]: df 
Out[2008]: 
    ORG1 ORG2 
0 A ESBL 
1 B  P 
2 C  Q 
3 D  R 
4 E ESBL 

In [2009]: df.loc[df['ORG2'] == 'ESBL', 'ORG1'] = df['ORG2'] 

In [2010]: df 
Out[2010]: 
    ORG1 ORG2 
0 ESBL ESBL 
1  B  P 
2  C  Q 
3  D  R 
4 ESBL ESBL 
당신이 원래 df를 수정하지 않고 사본을 필요로하는 경우 0

또는, 당신은 WOUTER-overmeire, 매우 간결 @.mask()

In [2016]: df.mask(df['ORG2'] == 'ESBL', df['ORG2'], axis=0) 
Out[2016]: 
    ORG1 ORG2 
0 ESBL ESBL 
1  B  P 
2  C  Q 
3  D  R 
4 ESBL ESBL 
관련 문제