pandas _合并 concat

pandas處理多組數據的時候往往會要用到數據的合并處理,使用 concat是一種基本的合并方式.而且concat中有很多參數可以調整,合并成你想要的數據形式.
1.axis(合并方向)
2.ignore_index(重置index)
3.join(合并方式)
4.join_axes(依照axes合并)
5.append(添加數據)


Demo.py

#axis (合并方向)
#axis=0是預設值,因此未設定任何參數時,函數默認axis=0
import pandas as pd
import numpy as np
#定義資料集
df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d'])
#concat縱向合并
res = pd.concat([df1, df2, df3], axis=0)
#打印結果
print(res)

#ignore_index (重置 index)
#承上一個例子,并將index_ignore設定為True
res = pd.concat([df1, df2, df3], axis=0, ignore_index=True)
#打印結果
print(res)

#join (合并方式)
#join='outer'為預設值,因此未設定任何參數時,函數默認join='outer'。
#此方式是依照column來做縱向合并,有相同的column上下合并在一起,
#其他獨自的column個自成列,原本沒有值的位置皆以NaN填充。
import pandas as pd
import numpy as np
#定義資料集
df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'], index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['b','c','d','e'], index=[2,3,4])
#縱向"外"合并df1與df2
res = pd.concat([df1, df2], axis=0, join='outer')
print(res)


#縱向"內"合并df1與df2
#原理同上個例子的說明,但只有相同的column合并在一起,其他的會被拋棄
res = pd.concat([df1, df2], axis=0, join='inner')
#打印結果
print(res)
#重置index并打印結果
res = pd.concat([df1, df2], axis=0, join='inner', ignore_index=True)
print(res)

#join_axes (依照 axes 合并)
import pandas as pd
import numpy as np
#定義資料集
df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'], index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['b','c','d','e'], index=[2,3,4])
#依照`df1.index`進行橫向合并
res = pd.concat([df1, df2], axis=1, join_axes=[df1.index])
#打印結果
print(res)
#移除join_axes,并打印結果
res = pd.concat([df1, df2], axis=1)
print(res)

#append (添加數據)
#append只有縱向合并(按行合并),沒有橫向合并(按列合并)。
import pandas as pd
import numpy as np

#定義資料集
df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])
s1 = pd.Series([1,2,3,4], index=['a','b','c','d'])

#將df2合并到df1的下面,以及重置index,并打印出結果
res = df1.append(df2, ignore_index=True)
print(res)
#合并多個df,將df2與df3合并至df1的下面,以及重置index,并打印出結果
res = df1.append([df2, df3], ignore_index=True)
print(res)
#合并series,將s1合并至df1,以及重置index,并打印出結果
res = df1.append(s1, ignore_index=True)
print(res)


結果:

     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
0  2.0  2.0  2.0  2.0
1  2.0  2.0  2.0  2.0
2  2.0  2.0  2.0  2.0
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
5  1.0  1.0  1.0  1.0
6  2.0  2.0  2.0  2.0
7  2.0  2.0  2.0  2.0
8  2.0  2.0  2.0  2.0
     a    b    c    d    e
1  0.0  0.0  0.0  0.0  NaN
2  0.0  0.0  0.0  0.0  NaN
3  0.0  0.0  0.0  0.0  NaN
2  NaN  1.0  1.0  1.0  1.0
3  NaN  1.0  1.0  1.0  1.0
4  NaN  1.0  1.0  1.0  1.0
     b    c    d
1  0.0  0.0  0.0
2  0.0  0.0  0.0
3  0.0  0.0  0.0
2  1.0  1.0  1.0
3  1.0  1.0  1.0
4  1.0  1.0  1.0
     b    c    d
0  0.0  0.0  0.0
1  0.0  0.0  0.0
2  0.0  0.0  0.0
3  1.0  1.0  1.0
4  1.0  1.0  1.0
5  1.0  1.0  1.0
     a    b    c    d    b    c    d    e
1  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
2  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
3  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
     a    b    c    d    b    c    d    e
1  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
2  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
3  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
4  NaN  NaN  NaN  NaN  1.0  1.0  1.0  1.0
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
5  1.0  1.0  1.0  1.0
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
5  1.0  1.0  1.0  1.0
6  1.0  1.0  1.0  1.0
7  1.0  1.0  1.0  1.0
8  1.0  1.0  1.0  1.0
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  1.0  2.0  3.0  4.0
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容