2017-12-21 3 views
1

다음과 같이 2 개의 팬더 DataFrame이 있습니다. 문자열과 np.nan 값을 포함합니다. DF =Python DataFrame : 선택한 값을 기본 DataFrame으로 대체하거나 결합하십시오.

A B C D E F 
0 aaa abx fwe dcs NaN gsx 
1 bbb daf dxs fsx NaN ewe 
2 ccc NaN NaN NaN NaN dfw 
3 ddd NaN NaN asc NaN NaN 
4 eee NaN NaN cse NaN NaN 
5 fff NaN NaN wer xer NaN 

df_result =

A C E F 
2 sfa NaN NaN wes 
4 web NaN NaN NaN 
5 NaN wwc wew NaN 

내가 원하는 것은 해당 컬럼과 인덱스 DataFrame를 DF하는 전체 df_result의 DataFrame을 복사합니다. 5 비수 (NaN에 FFF 변경) : 그래서 내 출력

A B C D E F 
0 aaa abx fwe dcs NaN gsx 
1 bbb dxs fsx fsx NaN ewe 
2 sfa NaN NaN NaN NaN wes 
3 wen NaN NaN asc NaN NaN 
4 web NaN NaN cse NaN NaN 
5 NaN NaN wwc wer wew NaN 

그래서 기본적으로 나는 심지어 DF THER이 같은 np.nan 값입니다 생각하는 df_result의 정확한 값을 복사 할 = 것입니다. 또한 열의 순서를 그대로 유지해야합니다. 이 작업을 수행하는 효율적인 방법을 알려주십시오. 고맙습니다!

+0

제한 합류 ... 정말, 당신이 할 수 있습니다 것은 SQL 데이터베이스에 덤핑 데이터를 필요로 (예를 들어, SQLite는 가장 가능성에 대한 조회 'pd.merge' , 더 정교한 논리로 합류) – openwonk

+0

@openwonk 판다 스에서 완전히 할 수있다 –

답변

3
df.update(dfr.fillna('NaN')) 
df.replace('NaN',np.nan) 
Out[501]: 
    A B C D E F 
0 aaa abx fwe dcs NaN gsx 
1 bbb daf dxs fsx NaN ewe 
2 sfa NaN NaN NaN NaN wes 
3 ddd NaN NaN asc NaN NaN 
4 web NaN NaN cse NaN NaN 
5 NaN NaN wwc wer wew NaN 
+0

하지만 사용자가 df_results의 인덱스 5를 NaN으로 대체하려고합니다. – 0p3n5ourcE

+0

@ 0p3n5ourcE 업데이트를 확인하십시오 – Wen

+0

좋습니다! 나는 이것이 결과와 일치한다고 생각한다. +1 – 0p3n5ourcE

2

열과 인덱스가 제대로 설정되었다고 가정하면됩니다. 작업 그것의

df.loc[df_result.index,df_result.columns] = df_result 

예 :

import pandas as pd 
import numpy as np 
df=pd.DataFrame(data=[ [1 for y in range(5)] for i in range(5)] , columns=list(range(5))) 
df.loc[0::2,2]=np.nan 
print(df) 
df2 = pd.DataFrame(data=[ [2 for y in range(3)] for i in range(2)] , columns=list(range(2,5)),index=range(1,3)) 
df2.loc[:,3] = np.nan 
print(df2) 
df.loc[df2.index,df2.columns] = df2 
print(df) 
+0

작동하지 않을 것이다. 나는 pandas merge에서 'update'기능을 발견했고, 나에게 완벽 해 보였지만 원하는대로 출력을 제공하지 못했습니다. 어떤 아이디어? – Kang

+0

이렇게하면됩니다. @ Kang 당신은 그것이 작동하지 않는다는 것을 의미합니까? – Dark

+0

나는 혼란 스럽다. 이것은 실제로 작동해야합니다, 당신에게 어떤 오류가 있습니까? 또한 df.update는 NaN 값으로 업데이트되지 않으므로 작동하지 않습니다. –

관련 문제