python的concat等用法
1,numpy中的concatenate()函數:
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])
>>> np.concatenate((a, b), axis=0)
array([[1, 2],
[3, 4],
[5, 6]])
>>> np.concatenate((a, b.T), axis=1)
array([[1, 2, 5],
[3, 4, 6]])
2,pandas中的merge,concat,join
# In[]:數據的合併
# 1 ,merge,類似資料庫中的
# (1)內連接,pd.merge(a1, a2, on="key")
# (2)左連接,pd.merge(a1, a2, on="key", how="left")
# (3)右連接,pd.merge(a1, a2, on="key", how="right")
# (4)外連接, pd.merge(a1, a2, on="key", how="outer")
data1 = pd.DataFrame(
np.arange(0,16).reshape(4,4),
columns=list("abcd")
)
data1
data2 = [
[4,1,5,7],
[6,5,7,1],
[9,9,123,129],
[16,16,32,1]
]
data2 = pd.DataFrame(data2,columns = ["a","b","c","d"])
data2
# 內連接 ,交集
pd.merge(data1,data2,on=["b"])
# 左連接 注意:如果 on 有兩個條件,on = ["a","b"]
# how = "left","right","outer"
pd.merge(data1,data2,on="b",how="left")
# 2,append,相當於R中的rbind
# ignore_index = True:這個時候 表示index重新記性排列,而且這種方法是複製一個樣本
data1.append(data2,ignore_index = True)
# 3,join
data2.columns=list("pown")
# 列名不能重疊:在這裡的用法和R中rbind很像,但是join的用法還是相對麻煩的
result = data1.join(data2)
result
# 4,concat 這個方法能夠實現上面所有的方法的效果
# concat函數是pandas底下的方法,可以把數據根據不同的軸進行簡單的融合
# pd.concat(objs, axis=0, join="outer", join_axes=None, ignore_index=False,
# keys=None, levels=None, names=None, verify_integrity=False)
# 參數說明:
# objs:series,dataframe,或者panel構成的序列list
# axis:0 行,1列
# join:inner,outer
# a,相同欄位表首尾巴相接
data1.columns = list("abcd")
data2.columns =list("abcd")
data3 = data2
# 為了更好的查看連接後的數據來源,添加一個keys更好查看
pd.concat([data1,data2,data3],keys=["data1","data2","data3"])
# b ,列合併(也就是行對齊):axis = 1,
pd.concat([data1,data2,data3],axis = 1,keys = ["data1","data2","data3"])
data4 = data3[["a","b","c"]]
# 在有些數據不存在的時候,會自動填充NAN
pd.concat([data1,data4])
# c:join:inner 交集,outer ,並集
pd.concat([data1,data4],join="inner")
# 在列名沒有一個相同的時候會報錯
# data4.index = list("mnp")
# pd.concat([data1,data4])
打開今日頭條,查看更多精彩圖片
TAG:程序員小新人學習 |