使用場景:
批量合併相同格式的excel、給dataframe新增行、給dataframe新增列
一句話說明concat語法:
concat語法:pandas.concat(objs, axis=0, join=『outer』, ignore_index=false)
import pandas as pd
import warnings
warnings.filterwarnings(
'ignore'
)
df1 = pd.dataframe(
)df1
ab
cde0
a0b0
c0d0e01
a1b1
c1d1e12
a2b2
c2d2e23
a3b3
c3d3
e3
df2 = pd.dataframe(
)df2
ab
cdf0
a4b4
c4d4f41
a5b5
c5d5f52
a6b6
c6d6f63
a7b7
c7d7f7
1、預設的concat,引數為axis=0、join=outer、ignore_index=false
pd.concat(
[df1,df2]
)
ab
cdef
0a0b0c0
d0e0
nan1
a1b1
c1d1
e1nan2a2
b2c2
d2e2
nan3
a3b3
c3d3
e3nan0a4
b4c4
d4nanf41
a5b5
c5d5
nanf52a6
b6c6
d6nanf63
a7b7
c7d7
nanf7
2、使用ignore_index=true可以忽略原來的索引
pd.concat(
[df1,df2]
, ignore_index=
true
)
ab
cdef
0a0b0c0
d0e0
nan1
a1b1
c1d1
e1nan2a2
b2c2
d2e2
nan3
a3b3
c3d3
e3nan4a4
b4c4
d4nanf45
a5b5
c5d5
nanf56a6
b6c6
d6nanf67
a7b7
c7d7
nanf7
3、使用join=inner過濾掉不匹配的列
pd.concat(
[df1,df2]
, ignore_index=
true
, join=
"inner"
)
ab
cd0a0
b0c0d01
a1b1
c1d12a2
b2c2d23
a3b3
c3d34a4
b4c4d45
a5b5
c5d56a6
b6c6d67
a7b7
c7d7
4、使用axis=1相當於新增新列
df1
ab
cde0
a0b0
c0d0e01
a1b1
c1d1e12
a2b2
c2d2e23
a3b3
c3d3e3
a:新增一列series
s1 = pd.series(
list
(range(4
)), name=
"f")
pd.concat(
[df1,s1]
, axis=
1)
ab
cdef
0a0b0c0
d0e001
a1b1
c1d1e11
2a2b2c2
d2e223
a3b3
c3d3e33
b:新增多列series
s2 = df1.
(lambda x:x[
"a"]
+"_gg"
, axis=
1)
s2
0 a0_gg
1 a1_gg
2 a2_gg
3 a3_gg
dtype: object
s2.name=
"g"
pd.concat(
[df1,s1,s2]
, axis=
1)
ab
cdef
g0a0b0
c0d0e00
a0_gg1a1
b1c1
d1e1
1a1_gg2a2
b2c2
d2e2
2a2_gg3a3
b3c3
d3e3
3a3_gg
# 列表可以只有series
pd.concat(
[s1,s2]
, axis=
1)
fg
00a0_gg11
a1_gg22
a2_gg33
a3_gg
# 列表是可以混合順序的
pd.concat(
[s1,df1,s2]
, axis=
1)
fa
bcde
g00a0
b0c0
d0e0
a0_gg11
a1b1
c1d1
e1a1_gg22
a2b2
c2d2
e2a2_gg33
a3b3
c3d3
e3a3_gg
df1 = pd.dataframe([[
1,2]
,[3,
4]], columns=
list
('ab'))
df1
ab
0121
34
df2 = pd.dataframe([[
5,6]
,[7,
8]], columns=
list
('ab'))
df2
ab
0561
781、給1個dataframe新增另乙個dataframeab
0121
3405
6178
2、忽略原來的索引ignore_index=true
true)a
b012
1342
5637
8 3、可以一行一行的給dataframe新增資料
# 乙個空的df
df = pd.dataframe(columns=
['a'])
df
a
a:低效能版本
for i in
range(5
):# 注意這裡每次都在複製
, ignore_index=
true
)df
a0
0112
2334
4 b:效能好的版本
# 第乙個入參是乙個列表,避免了多次複製
pd.concat(
[pd.dataframe(
[i], columns=
['a'])
for i in
range(5
)], ignore_index=
true
)
a0
0112
2334
4
pandas資料合併
pandas 提供了三種主要方法可以對資料進行合併 pandas.merge 方法 資料庫風格的合併 例如,通過merge 方法將兩個dataframe合併 on name 的意思是將name列當作鍵 預設情況下,merge做的是內連線 inner 即鍵的交集。其他方式還有左連線 left 右連線 ...
pandas合併資料merge
snailtyan 本文主要是關於pandas的一些基本用法。usr bin env python coding utf 8 import pandas as pd import numpy as np test 1 定義資料 left pd.dataframe right pd.dataframe...
pandas (七)資料合併
合併拼接行 將df2中的行新增到df1的尾部 指定列合併成乙個新錶新列 ndf df 提名1 提名2 ignore index true 提名3 ignore index true ndf pd.dataframe ndf,columns 姓名 將df2中的列新增到df1的尾部 df.concat ...