2016-12-16 2 views
1

한 데이터 프레임 (df2)에서 다른 데이터 프레임 (df1)으로 데이터 프레임의 시리즈 ('b')를 쓰고 싶습니다. 두 DataFrames는 같은 인덱스 열을 사용하지만 df2의 인덱스 범위가 조금 더 넓어지고 인덱스 중 일부가 누락되었습니다 (df1).데이터 프레임 증가 인덱스

이 현재 동작입니다 : 내가 df1['b'] = df2['b']nan되고있다하지 df2에있는 인덱스의 해당 값과 df1로 이월되지 않아요 df1에없는 df2의 인덱스를 호출 할 때

>>> import pandas as pd 
>>> pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}) 
    a b 
0 1 4 
1 2 5 
2 3 6 
>>> 
>>> df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}) 
>>> df1 = df.set_index(['a']) 
>>> df1 
    b 
a 
1 4 
2 5 
3 6 
>>> dg = pd.DataFrame({'a': [3, 4, 5], 'b': [7, 8, 9]}) 
>>> dg 
    a b 
0 3 7 
1 4 8 
2 5 9 
>>> df2 = dg.set_index('a') 
>>> df2 
    b 
a 
3 7 
4 8 
5 9 
>>> df1['b'] = df2['b'] 
>>> df1 
    b 
a  
1 NaN 
2 NaN 
3 7.0 

.

결과 데이터 프레임이 아래에 있도록이 동작을 변경할 수있는 방법이 있습니까? 당신이 갈 수

>>> df1 
    b 
a  
1 1 
2 2 
3 7 
4 8 
5 9 

답변

0

하나의 옵션은 reindex() DF2하고 다음 DF1과 누락 된 값을 입력 :

df2 = df2.reindex(df1.index.union(df2.index))  
df2['b'] = df2['b'].fillna(df1['b']) 

df2 
#  b 
#a 
#1 4.0 
#2 5.0 
#3 7.0 
#4 8.0 
#5 9.0 
2

combine_first에 대한 사용 사례입니다. 호출하는 데이터 프레임의 우선 순위를 지정하고 누락 된 값을 두 번째 값으로 채 웁니다. 또한 첫 번째 레이블에 레이블이없는 두 번째 데이터 프레임의 행을 연결합니다.

df2.combine_first(df1) 
관련 문제