這可能是容易的,但我有以下數據:追加列大熊貓數據幀
在數據幀1:
index dat1
0 9
1 5
在數據幀2:
index dat2
0 7
1 6
我想具有以下形式的數據幀:
index dat1 dat2
0 9 7
1 5 6
我試過使用append
方法,但我得到了一個交叉連接(即笛卡爾積)。
什麼是正確的方法來做到這一點?
這可能是容易的,但我有以下數據:追加列大熊貓數據幀
在數據幀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
恰到好處的谷歌搜索的問題:
data = dat_1.append(dat_2)
data = data.groupby(data.index).sum()
這個頁面是谷歌搜索出現的。 – denson
您還可以使用:
dat1 = pd.concat([dat1, dat2], axis=1)
join()和concat()方式都可以解決這個問題。但是,我必須提到一個警告:如果嘗試通過從另一個DataFrame中選擇一些行來處理某些數據幀,請在重新加入連接或concat之前重置索引。下面
一個例子顯示的加入,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
那麼說好點。我嘗試不重置索引並生成了很多NULLS – Anand
你嘗試了'join'方法? – BrenBarn
data_frame_1 ['dat2'] = data_frame_2 ['dat2'] – lowtech
@lowtech:這是否確保索引正確配對? – BenDundee