이것은 아마도 쉬울 수 있지만 다음 데이터가 있습니다.
데이터 프레임 1 :
index dat1
0 9
1 5
데이터 프레임 2 :
index dat2
0 7
1 6
다음과 같은 형식의 데이터 프레임이 필요합니다.
index dat1 dat2
0 9 7
1 5 6
append
방법을 사용해 보았지만 교차 조인 (예 : 데카르트 곱) 이 생겼습니다 .
이를 수행하는 올바른 방법은 무엇입니까?
답변
일반적으로 조인을 찾고있는 것 같습니다.
> dat1 = pd.DataFrame({'dat1': [9,5]})
> dat2 = pd.DataFrame({'dat2': [7,6]})
> dat1.join(dat2)
dat1 dat2
0 9 7
1 5 6
답변
다음을 사용할 수도 있습니다.
dat1 = pd.concat([dat1, dat2], axis=1)
답변
모두 join()
와 concat()
방법은 문제를 해결할 수 있습니다. 그러나 언급해야 할 경고가 하나 있습니다 . 인덱스를 재설정 join()
하거나 concat()
다른 DataFrame에서 일부 행을 선택하여 일부 데이터 프레임을 처리하려는 경우.
아래의 한 예는 join 및 concat의 흥미로운 동작을 보여줍니다.
dat1 = pd.DataFrame({'dat1': range(4)})
dat2 = pd.DataFrame({'dat2': range(4,8)})
dat1.index = [1,3,5,7]
dat2.index = [2,4,6,8]
# way1 join 2 DataFrames
print(dat1.join(dat2))
# output
dat1 dat2
1 0 NaN
3 1 NaN
5 2 NaN
7 3 NaN
# way2 concat 2 DataFrames
print(pd.concat([dat1,dat2],axis=1))
#output
dat1 dat2
1 0.0 NaN
2 NaN 4.0
3 1.0 NaN
4 NaN 5.0
5 2.0 NaN
6 NaN 6.0
7 3.0 NaN
8 NaN 7.0
#reset index
dat1 = dat1.reset_index(drop=True)
dat2 = dat2.reset_index(drop=True)
#both 2 ways to get the same result
print(dat1.join(dat2))
dat1 dat2
0 0 4
1 1 5
2 2 6
3 3 7
print(pd.concat([dat1,dat2],axis=1))
dat1 dat2
0 0 4
1 1 5
2 2 6
3 3 7
답변
사실 :
data_joined = dat1.join(dat2)
print(data_joined)
답변
올바른 Google 검색의 문제 :
data = dat_1.append(dat_2)
data = data.groupby(data.index).sum()