0
두 개의 데이터 프레임이 있고 일부 열 이름은 같고 일부는 다릅니다. 일반적인 열 이름 만 가진 병합 된 데이터 프레임을 만들고 싶습니다. 있는 dataframe을 할 경우 지금팬더 : 두 개의 데이터 프레임을 병합하고 공통 열 이름 만 유지
d1 = {'group' : ('A', 'B', 'C') , 'names' : ('alpha', 'beta', 'gamma') ,'num1': (1,2,3)}
df1 = pd.DataFrame(d1)
d2 = {'group' : ('B', 'C', 'D',) , 'names' : ('Beta','Gamma','Delta') ,'num2': (4,5,6)}
df2=pd.DataFrame(d2)
를 들어
만 group
및 names
하지만 num1
및 num2
, 나는이
L1=list(df1.columns)
L2=list(df2.columns)
L=list(set(L1).intersection(L2))
df=pd.merge(df1,df2, on=L,how='outer')
cols = [col for col in df.columns if col not in L]
df=df.drop(cols,axis=1)
df
이 나를 위해 완벽하게 잘 작동 할 수 있지만, 나는 확신 그것을하는 더 좋은 방법이 있습니다. 나는 이것을 실현하기 위해 set intersection
, merge
및 list comprehension
을 사용하지 않아도된다고 생각합니다.
나는 이것을 달성하기위한보다 우아한 방법에 대한 어떤 생각이라도 고맙게 생각합니다.
이 완벽하고 나는이 놓친 믿을 수 없다. – PagMax