Python之Pandas使用教程

 

Python之Pandas使用教程

1.Pandas概述

  1. Pandas是Python的一個數據分析包,該工具爲解決數據分析任務而創建。
  2. Pandas納入大量庫和標準數據模型,提供高效的操作數據集所需的工具。
  3. Pandas提供大量能使我們快速便捷地處理數據的函數和方法。
  4. Pandas是字典形式,基於NumPy創建,讓NumPy爲中心的應用變得更加簡單。

2.Pandas安裝

pip3 install pandas

3.Pandas引入

import pandas as pd

4.Pandas數據結構

4.1Series

複製代碼

import numpy as np

import pandas as pd

s=pd.Series([1,2,3,np.nan,5,6])

print(s)

 

----------執行以上程序,返回的結果爲----------

0    1.0
1    2.0
2    3.0
3    NaN
4    5.0
5    6.0
dtype: float64

複製代碼

4.2DataFrame

DataFrame是表格型數據結構,包含一組有序的列,每列可以是不同的值類型。DataFrame有行索引和列索引,可以看成由Series組成的字典。

複製代碼

import numpy as np

import pandas as pd

 

dates=pd.date_range('2019-08-01',periods=6)

pd=pd.DataFrame(np.random.randn(6,4),index=dates,columns=['A','B','C','D'])

print('輸出6行4列的表格:')

print(pd)

print('\n')

 

print('輸出第二列:')

print(pd['B'])

print('\n')

 

----------執行以上程序,返回的結果爲----------

輸出6行4列的表格:
                   A         B         C         D
2019-08-01  0.796050 -0.383286 -1.465294 -0.272321
2019-08-02 -1.431981 -0.875381  1.371449  0.321703
2019-08-03 -1.497636  1.258925 -1.374210 -0.765626
2019-08-04  2.518305  0.125094  2.647512 -0.024748
2019-08-05 -0.319238  0.395384 -0.582052 -0.396132
2019-08-06 -0.519434  1.873216  1.685524 -1.493000


輸出第二列:
2019-08-01   -0.383286
2019-08-02   -0.875381
2019-08-03    1.258925
2019-08-04    0.125094
2019-08-05    0.395384
2019-08-06    1.873216
Freq: D, Name: B, dtype: float64

 

-------------------------------------------

import numpy as np

import pandas as pd

from datetime import datetime as dt

 

print('通過字典創建DataFrame:')

df_1=pd.DataFrame({'A':1.0,

'B':pd.Timestamp(2019,8,19),

'C':pd.Series(1,index=list(range(4)),dtype='float32'),

'D':np.array([3]*4,dtype='int32'),

'E':pd.Categorical(['test','train','test','train']),

'F':'foo'})

print(df_1)

print('\n')

 

print('返回每列的數據類型:')

print(df_1.dtypes)

print('\n')

 

print('返回行的序號:')

print(df_1.index)

print('\n')

 

print('返回列的序號名字:')

print(df_1.columns)

print('\n')

 

print('把每個值進行打印出來:')

print(df_1.values)

print('\n')

 

print('數字總結:')

print(df_1.describe())

print('\n')

 

print('翻轉數據:')

print(df_1.T)

print('\n')

 

print('按第一列進行排序:')

#axis等於1按列進行排序 如ABCDEFG 然後ascending倒敘進行顯示

print(df_1.sort_index(1,ascending=False))

print('\n')

 

print('按某列的值進行排序:')

print(df_1.sort_values('E'))

print('\n')

 

----------執行以上程序,返回的結果爲----------

通過字典創建DataFrame:
     A          B    C  D      E    F
0  1.0 2019-08-19  1.0  3   test  foo
1  1.0 2019-08-19  1.0  3  train  foo
2  1.0 2019-08-19  1.0  3   test  foo
3  1.0 2019-08-19  1.0  3  train  foo


返回每列的數據類型:
A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object


返回行的序號:
Int64Index([0, 1, 2, 3], dtype='int64')


返回列的序號名字:
Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')


把每個值進行打印出來:
[[1.0 Timestamp('2019-08-19 00:00:00') 1.0 3 'test' 'foo']
 [1.0 Timestamp('2019-08-19 00:00:00') 1.0 3 'train' 'foo']
 [1.0 Timestamp('2019-08-19 00:00:00') 1.0 3 'test' 'foo']
 [1.0 Timestamp('2019-08-19 00:00:00') 1.0 3 'train' 'foo']]


數字總結:
         A    C    D
count  4.0  4.0  4.0
mean   1.0  1.0  3.0
std    0.0  0.0  0.0
min    1.0  1.0  3.0
25%    1.0  1.0  3.0
50%    1.0  1.0  3.0
75%    1.0  1.0  3.0
max    1.0  1.0  3.0


翻轉數據:
                     0                    1                    2                    3
A                    1                    1                    1                    1
B  2019-08-19 00:00:00  2019-08-19 00:00:00  2019-08-19 00:00:00  2019-08-19 00:00:00
C                    1                    1                    1                    1
D                    3                    3                    3                    3
E                 test                train                 test                train
F                  foo                  foo                  foo                  foo


按第一列進行排序:
     F      E  D    C          B    A
0  foo   test  3  1.0 2019-08-19  1.0
1  foo  train  3  1.0 2019-08-19  1.0
2  foo   test  3  1.0 2019-08-19  1.0
3  foo  train  3  1.0 2019-08-19  1.0


按某列的值進行排序:
     A          B    C  D      E    F
0  1.0 2019-08-19  1.0  3   test  foo
2  1.0 2019-08-19  1.0  3   test  foo
1  1.0 2019-08-19  1.0  3  train  foo
3  1.0 2019-08-19  1.0  3  train  foo

 

複製代碼

5.Pandas選擇數據

複製代碼

import numpy as np

import pandas as pd

 

dates=pd.date_range('2019-08-01',periods=6)

df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=['A','B','C','D'])

print('輸出6行4列的數據:')

print(df)

 

print('打印B列數據:')

print(df['B'])

 

----------執行以上程序,返回的結果爲----------

輸出6行4列的數據:
                   A         B         C         D
2019-08-01 -0.856790 -1.968381 -0.590032 -0.511943
2019-08-02  0.032420  0.750065 -1.168060 -1.571403
2019-08-03  0.962793 -2.377613  1.447871 -1.515988
2019-08-04  1.078565  1.780728 -0.060782  1.393749
2019-08-05 -1.785669  1.161425  0.440988  1.233997
2019-08-06 -0.740927 -0.877388 -0.868203  1.395331


打印B列數據:
2019-08-01   -1.968381
2019-08-02    0.750065
2019-08-03   -2.377613
2019-08-04    1.780728
2019-08-05    1.161425
2019-08-06   -0.877388
Freq: D, Name: B, dtype: float64

複製代碼

切片選擇

複製代碼

print('切片選擇:')

print(df[0:3],df['20190801':'20190804'])

 

----------執行以上程序,返回的結果爲----------

切片選擇:
                   A         B         C         D
2019-08-01 -0.456445 -1.641900  0.878254 -0.265412
2019-08-02  0.223910 -1.524222  0.428250  0.410542
2019-08-03 -1.248945  0.649155 -1.039407  0.138473                   

                   A         B         C         D
2019-08-01 -0.456445 -1.641900  0.878254 -0.265412
2019-08-02  0.223910 -1.524222  0.428250  0.410542
2019-08-03 -1.248945  0.649155 -1.039407  0.138473
2019-08-04 -1.135849  1.404054 -0.771489 -0.685064

複製代碼

根據標籤loc-行標籤進行選擇數據

複製代碼

print('根據行標籤進行選擇數據:')

print(df.loc['2019-08-01',['A','B']])

 

----------執行以上程序,返回的結果爲----------

根據行標籤進行選擇數據:
A   -0.495304
B   -0.083505
Name: 2019-08-01 00:00:00, dtype: float64

複製代碼

根據序列iloc-行號進行選擇數據

複製代碼

import numpy as np

import pandas as pd

 

print('輸出第三行第一列的數據:')

print(df.iloc[3,1])

print('\n')

 

print('進行切片選擇:')

print(df.iloc[3:5,0:2])

print('\n')

 

print('進行不連續篩選:')

print(df.iloc[[1,2,4],[0,2]])

 

----------執行以上程序,返回的結果爲----------

輸出第三行第一列的數據:
1.2355112660049548


進行切片選擇:
                   A         B
2019-08-04 -0.943150  1.235511
2019-08-05 -0.245097 -1.272304


進行不連續篩選:
                   A         C
2019-08-02 -0.212743 -0.584698
2019-08-03  0.012863 -0.896789
2019-08-05 -0.245097  2.646507

複製代碼

根據混合的兩種ix

複製代碼

import numpy as np

import pandas as pd

 

print(df.ix(:3,[A,C]))

 

----------執行以上程序,返回的結果爲----------

                   A         C
2019-08-01  1.591064  1.272731
2019-08-02  1.820216  0.657560
2019-08-03  0.358265 -1.197687

複製代碼

根據判斷篩選

複製代碼

import numpy as np

import pandas as pd

 

print('根據判斷篩選:')

print(df[df.A>0])

 

----------執行以上程序,返回的結果爲----------

根據判斷篩選:
                   A         B         C         D
2019-08-01  1.098786  0.261861  1.430775 -1.161001
2019-08-05  0.527853 -0.612058 -0.906565  1.279515

複製代碼

 6.Pandas設置數據

根據loc和iloc設置

複製代碼

import numpy as np

import pandas as pd

 

dates=pd.date_range('2019-08-01',periods=6)

df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['A','B','C','D'])

print('輸出6行4列的數據:')

print(df)

print('\n')

 

print('更改後的數據:')

df.iloc[2,2]=999

df.loc['2019-08-01','D']=999

print(df)

print('\n')

 

----------執行以上程序,返回的結果爲----------

輸出6行4列的數據:
             A   B   C   D
2019-08-01   0   1   2   3
2019-08-02   4   5   6   7
2019-08-03   8   9  10  11
2019-08-04  12  13  14  15
2019-08-05  16  17  18  19
2019-08-06  20  21  22  23


更改後的數據:
             A   B    C    D
2019-08-01   0   1    2  999
2019-08-02   4   5    6    7
2019-08-03   8   9  999   11
2019-08-04  12  13   14   15
2019-08-05  16  17   18   19
2019-08-06  20  21   22   23

複製代碼

根據條件設置

複製代碼

import numpy as np

import pandas as pd

 

print('根據條件設置:')

df[df.A>0]=999

print(df)

 

----------執行以上程序,返回的結果爲----------

根據條件設置:
              A    B    C    D
2019-08-01    0    1    2  999
2019-08-02  999  999  999  999
2019-08-03  999  999  999  999
2019-08-04  999  999  999  999
2019-08-05  999  999  999  999
2019-08-06  999  999  999  999

複製代碼

根據行或列設置

複製代碼

import numpy as np

import pandas as pd

 

print('根據行或列設置:')

df['C']=np.nan

print(df)

 

----------執行以上程序,返回的結果爲----------

根據行或列設置:
              A    B   C    D
2019-08-01    0    1 NaN  999
2019-08-02  999  999 NaN  999
2019-08-03  999  999 NaN  999
2019-08-04  999  999 NaN  999
2019-08-05  999  999 NaN  999
2019-08-06  999  999 NaN  999

複製代碼

添加數據

複製代碼

import numpy as np

import pandas as pd

 

print('添加數據:')

df['E']=pd.Series([1,2,3,4,5,6],index=pd.date_range('2019-08-03',periods=6))

print(df)

 

----------執行以上程序,返回的結果爲----------

添加數據:
              A    B   C    D    E
2019-08-01    0    1 NaN  999  NaN
2019-08-02  999  999 NaN  999  NaN
2019-08-03  999  999 NaN  999  1.0
2019-08-04  999  999 NaN  999  2.0
2019-08-05  999  999 NaN  999  3.0
2019-08-06  999  999 NaN  999  4.0

複製代碼

7.Pandas處理丟失數據

處理數據中NaN數據

複製代碼

import numpy as np

import pandas as pd

 

dates=pd.date_range('2019-08-01',periods=6)

df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['A','B','C','D'])

df.iloc[0,1]=np.nan

df.iloc[1,2]=np.nan

print('輸出6行4列的數據:')

print(df)

print('\n')

print('使用dropna()函數去掉NaN的行或列:')

print(df.dropna(0,how='any'))#0對行進行操作 1對列進行操作 any:只要存在NaN即可drop掉 all:必須全部是NaN纔可drop

print('\n')

print('使用fillna()函數替換NaN值:')

print(df.fillna(value=0))#將NaN值替換爲0

print('\n')

print('使用isnull()函數判斷數據是否丟失:')

print(pd.isnull(df))

 

----------執行以上程序,返回的結果爲----------

輸出6行4列的數據:
             A     B     C   D
2019-08-01   0   NaN   2.0   3
2019-08-02   4   5.0   NaN   7
2019-08-03   8   9.0  10.0  11
2019-08-04  12  13.0  14.0  15
2019-08-05  16  17.0  18.0  19
2019-08-06  20  21.0  22.0  23


使用dropna()函數去掉NaN的行或列:
             A     B     C   D
2019-08-03   8   9.0  10.0  11
2019-08-04  12  13.0  14.0  15
2019-08-05  16  17.0  18.0  19
2019-08-06  20  21.0  22.0  23


使用fillna()函數替換NaN值:
             A     B     C   D
2019-08-01   0   0.0   2.0   3
2019-08-02   4   5.0   0.0   7
2019-08-03   8   9.0  10.0  11
2019-08-04  12  13.0  14.0  15
2019-08-05  16  17.0  18.0  19
2019-08-06  20  21.0  22.0  23


使用isnull()函數判斷數據是否丟失:
                A      B      C      D
2019-08-01  False   True  False  False
2019-08-02  False  False   True  False
2019-08-03  False  False  False  False
2019-08-04  False  False  False  False
2019-08-05  False  False  False  False
2019-08-06  False  False  False  False

複製代碼

8.Pandas導入導出

pandas可以讀取與存取像csv、excel、json、html、pickle等格式的資料,詳細說明請看官方資料

複製代碼

import numpy as np

import pandas as pd

 

print('讀取csv文件:')

data=pd.read_csv('test2.csv')

print(data)

print('將資料存儲成pickle文件:')

print(data.to_pickle('test3.pickle'))

 

----------執行以上程序,返回的結果爲----------

讀取csv文件:
   A  B  C  D
0  1  1  1  1
1  2  2  2  2
2  3  3  3  3


將資料存儲成pickle文件:
None

複製代碼

9.Pandas合併數據

axis合併方向

複製代碼

import numpy as np

import pandas as pd

 

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'])

res=pd.concat([df1,df2,df3],axis=0,ignore_index=True)#0表示豎項合併 1表示橫項合併 ingnore_index重置序列index index變爲0 1 2 3 4 5 6 7 8

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
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

複製代碼

join合併方式

複製代碼

import numpy as np

import pandas as pd

 

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])

print('第一個數據爲:')

print(df1)

print('\n')

print('第二個數據爲:')

print(df2)

print('\n')

 

print('join行往外合併:相當於全連接')

res=pd.concat([df1,df2],axis=1,join='outer')

print(res)

print('\n')

 

print('join行相同的進行合併:相當於內連接')

res2=pd.concat([df1,df2],axis=1,join='inner')

print(res2)

print('\n')

 

print('以df1的序列進行合併:相當於左連接')

res3=pd.concat([df1,df2],axis=1,join_axes=[df1.index])

print(res3)

 

----------執行以上程序,返回的結果爲----------

第一個數據爲:
     A    B    C    D
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0


第二個數據爲:
     B    C    D    E
2  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0


join行往外合併:相當於全連接
     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


join行相同的進行合併:相當於內連接
     A    B    C    D    B    C    D    E
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


以df1的序列進行合併:相當於左連接
     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

複製代碼

append添加數據

複製代碼

import numpy as np

import pandas as pd

 

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'])

s1=pd.Series([1,2,3,4],index=['a','b','c','d'])

 

print('將df2合併到df1的下面 並重置index')

res=df1.append(df2,ignore_index=True)

print(res)

print('\n')

 

print('將s1合併到df1的下面,並重置index')

res2=df1.append(s1,ignore_index=True)

print(res2)

 

----------執行以上程序,返回的結果爲----------

將df2合併到df1的下面 並重置index
     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


將s1合併到df1的下面,並重置index
     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

複製代碼

10.Pandas合併merge

依據一組key合併

複製代碼

import numpy as np

import pandas as pd

 

left=pd.DataFrame({'key':['k0','k1','k2','k3'],

                     'A':['A0','A1','A2','A3'],

                     'B':['B0','B1','B2','B3']})

print('第一個數據爲:')

print(left)

print('\n')

 

right=pd.DataFrame({'key':['k0','k1','k2','k3'],

                      'C':['C0','C1','C2','C3'],

                      'D':['D0','D1','D2','D3']})

print('第二個數據爲:')

print(right)

print('\n')

 

print('依據key進行merge:')

res=pd.merge(left,right,on='key')

print(res)

 

----------執行以上程序,返回的結果爲----------

第一個數據爲:
  key   A   B
0  k0  A0  B0
1  k1  A1  B1
2  k2  A2  B2
3  k3  A3  B3


第二個數據爲:
  key   C   D
0  k0  C0  D0
1  k1  C1  D1
2  k2  C2  D2
3  k3  C3  D3


依據key進行merge:
  key   A   B   C   D
0  k0  A0  B0  C0  D0
1  k1  A1  B1  C1  D1
2  k2  A2  B2  C2  D2
3  k3  A3  B3  C3  D3

複製代碼

依據兩組key合併

複製代碼

import numpy as np

import pandas as pd

 

left=pd.DataFrame({'key1':['k0','k1','k2','k3'],

                   'key2':['k0','k1','k0','k1'],

                      'A':['A0','A1','A2','A3'],

                      'B':['B0','B1','B2','B3']})

print('第一個數據爲:')

print(left)

print('\n')

 

right=pd.DataFrame({'key1':['k0','k1','k2','k3'],

                    'key2':['k0','k0','k0','k0'],

                       'C':['C0','C1','C2','C3'],

                       'D':['D0','D1','D2','D3']})

print('第二個數據爲:')

print(right)

print('\n')

 

print('內聯合並')

res=pd.merge(left,right,on=['key1','key2'],how='inner')

print(res)

print('\n')

 

print('外聯合並')

res2=pd.merge(left,right,on=['key1','key2'],how='outer')

print(res2)

print('\n')

 

print('左聯合並')

res3=pd.merge(left,right,on=['key1','key2'],how='left')

print(res3)

print('\n')

 

print('右聯合並')

res4=pd.merge(left,right,on=['key1','key2'],how='right')

print(res4)

 

----------執行以上程序,返回的結果爲----------

第一個數據爲:
  key1 key2   A   B
0   k0   k0  A0  B0
1   k1   k1  A1  B1
2   k2   k0  A2  B2
3   k3   k1  A3  B3


第二個數據爲:
  key1 key2   C   D
0   k0   k0  C0  D0
1   k1   k0  C1  D1
2   k2   k0  C2  D2
3   k3   k0  C3  D3


內聯合並
  key1 key2   A   B   C   D
0   k0   k0  A0  B0  C0  D0
1   k2   k0  A2  B2  C2  D2


外聯合並
  key1 key2    A    B    C    D
0   k0   k0   A0   B0   C0   D0
1   k1   k1   A1   B1  NaN  NaN
2   k2   k0   A2   B2   C2   D2
3   k3   k1   A3   B3  NaN  NaN
4   k1   k0  NaN  NaN   C1   D1
5   k3   k0  NaN  NaN   C3   D3


左聯合並
  key1 key2   A   B    C    D
0   k0   k0  A0  B0   C0   D0
1   k1   k1  A1  B1  NaN  NaN
2   k2   k0  A2  B2   C2   D2
3   k3   k1  A3  B3  NaN  NaN


右聯合並
  key1 key2    A    B   C   D
0   k0   k0   A0   B0  C0  D0
1   k2   k0   A2   B2  C2  D2
2   k1   k0  NaN  NaN  C1  D1
3   k3   k0  NaN  NaN  C3  D3

複製代碼

Indicator合併

複製代碼

import numpy as np

import pandas as pd

df1=pd.DataFrame({'col1':[0,1],'col_left':['a','b']})

df2=pd.DataFrame({'col1':[1,2,2],'col_right':[2,2,2]})

print('第一個數據爲:')

print(df1)

print('\n')

 

print('第二個數據爲:')

print(df2)

print('\n')

 

print('依據col1進行合併 並啓用indicator=True輸出每項合併方式:')

res=pd.merge(df1,df2,on='col1',how='outer',indicator=True)

print(res)

print('\n')

 

----------執行以上程序,返回的結果爲----------

第一個數據爲:
   col1 col_left
0     0        a
1     1        b


第二個數據爲:
   col1  col_right
0     1          2
1     2          2
2     2          2


依據col1進行合併 並啓用indicator=True輸出每項合併方式:
   col1 col_left  col_right      _merge
0     0        a        NaN   left_only
1     1        b        2.0        both
2     2      NaN        2.0  right_only
3     2      NaN        2.0  right_only

 

複製代碼

依據index合併

複製代碼

import numpy as np

import pandas as pd

 

left=pd.DataFrame({'A':['A0','A1','A2'],

                   'B':['B0','B1','B2']},

                   index=['k0','k1','k2'])

 

right=pd.DataFrame({'C':['C0','C1','C2'],

                    'D':['D0','D1','D2']},

                   index=['k0','k2','k3']

)

 

print('第一個數據爲:')

print(left)

print('\n')

 

print('第二個數據爲:')

print(right)

print('\n')

 

print('根據index索引進行合併 並選擇外聯合並')

res=pd.merge(left,right,left_index=True,right_index=True,how='outer')

print(res)

print('\n')

 

print('根據index索引進行合併 並選擇內聯合並')

res2=pd.merge(left,right,left_index=True,right_index=True,how='inner')

print(res2)

print('\n')

 

 

----------執行以上程序,返回的結果爲----------

第一個數據爲:
     A   B
k0  A0  B0
k1  A1  B1
k2  A2  B2


第二個數據爲:
     C   D
k0  C0  D0
k2  C1  D1
k3  C2  D2


根據index索引進行合併 並選擇外聯合並
      A    B    C    D
k0   A0   B0   C0   D0
k1   A1   B1  NaN  NaN
k2   A2   B2   C1   D1
k3  NaN  NaN   C2   D2


根據index索引進行合併 並選擇內聯合並
     A   B   C   D
k0  A0  B0  C0  D0
k2  A2  B2  C1  D1

複製代碼

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章