• 在庆祝海南建省办经济特区30周年大会上的讲话 2019-10-07
  • 俄罗斯世界杯F组:球迷风采 2019-09-24
  • 彭于晏廖凡曝姜文“精神洁癖” 2019-09-24
  • 苏州大学研究生支教团网上众筹资助留守儿童 2019-09-23
  • 湖北政务微信排行榜第187期出炉 交警类公号表现亮眼 2019-09-19
  • 【奋斗吧2018】风电检修工——荒原上的“听风者” 2019-08-31
  • 母亲节又送康乃馨?送这样的健康佳品才走心 2019-08-30
  • [酷]此文已经把马克思理论、边际理论、人类需求层次理论、生物学理论、心理学理论、社会管理学理论等理论在哲学层面完美融合了! 2019-08-26
  • 兰芝雪纱修颜气垫隔离霜 2019-07-27
  • “鹊桥”中继星顺利进入使命轨道运行 2019-07-27
  • 超越舆情管理的360度信息决策 2019-07-22
  • 视频陶然居变形记:从路边小饭馆到全国餐饮十强 2019-07-21
  • 防震减灾事业发展的重要理论成果 2019-07-20
  • 珠宝配美人!李冰冰大片衣着性感秀身段 2019-07-20
  • 机器人也能拥有“情商”?这个可以有 2019-07-19
  • 香港赛马会app怎样下载:Python常见的pandas用法demo示例

     更新时间:2019年03月16日 11:47:03   作者:xuejianbest   我要评论
    这篇文章主要介绍了Python常见的pandas用法,结合实例形式总结分析了Python使用pandas??榈某<僮骷记捎胂喙刈⒁馐孪?需要的朋友可以参考下

    香港赛马会网站惠泽社绝杀八码 www.mwcrz.tw 本文实例总结了Python常见的pandas用法。分享给大家供大家参考,具体如下:

    import numpy as np
    import pandas as pd
    
    
    s = pd.Series([1,3,6, np.nan, 44, 1]) #定义一个序列。 序列就是一列内容,每一行有一个index值
    print(s)
    print(s.index)
    
    

    0     1.0
    1     3.0
    2     6.0
    3     NaN
    4    44.0
    5     1.0
    dtype: float64
    RangeIndex(start=0, stop=6, step=1)

    dates = pd.date_range('20180101', periods=6)
    print(dates)
    
    

    DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
                   '2018-01-05', '2018-01-06'],
                  dtype='datetime64[ns]', freq='D')

    df1 = pd.DataFrame(np.arange(12).reshape(3,4)) #定义DataFrame,可以看作一个有index和colunms的矩阵
    print(df)
    
    

       0  1   2   3
    0  0  1   2   3
    1  4  5   6   7
    2  8  9  10  11

    df2 = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['a', 'b', 'c', 'd']) #np.random.randn(6,4)生成6行4列矩阵
    print(df)
    
    

                       a         b         c         d
    2018-01-01  0.300675  1.769383  1.244406 -1.058294
    2018-01-02  0.832666  2.216755  0.178716 -0.156828
    2018-01-03  1.314190 -0.866199  0.836150  1.001026
    2018-01-04 -1.671724  1.147406 -0.148676 -0.272555
    2018-01-05  1.146664  2.022861 -1.833995 -0.627568
    2018-01-06 -0.192242  1.517676  0.756707  0.058869

    df = pd.DataFrame({'A':1.0,
              'B':pd.Timestamp('20180101'),
              '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'}) #按照给出的逐列定义df
    
    print(df)
    print(df.dtypes)
    
    

         A          B    C  D      E    F
    0  1.0 2018-01-01  1.0  3   test  foo
    1  1.0 2018-01-01  1.0  3  train  foo
    2  1.0 2018-01-01  1.0  3   test  foo
    3  1.0 2018-01-01  1.0  3  train  foo
    A           float64
    B    datetime64[ns]
    C           float32
    D             int32
    E          category
    F            object
    dtype: object

    #df的行、列、值
    print(df.index)
    print(df.columns)
    print(df.values)
    
    

    Int64Index([0, 1, 2, 3], dtype='int64')
    Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')
    [[1.0 Timestamp('2018-01-01 00:00:00') 1.0 3 'test' 'foo']
     [1.0 Timestamp('2018-01-01 00:00:00') 1.0 3 'train' 'foo']
     [1.0 Timestamp('2018-01-01 00:00:00') 1.0 3 'test' 'foo']
     [1.0 Timestamp('2018-01-01 00:00:00') 1.0 3 'train' 'foo']]

    print(df.describe()) #统计
    print(df.T) #转置
    
    

             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  \
    A                    1                    1                    1
    B  2018-01-01 00:00:00  2018-01-01 00:00:00  2018-01-01 00:00:00
    C                    1                    1                    1
    D                    3                    3                    3
    E                 test                train                 test
    F                  foo                  foo                  foo
                         3
    A                    1
    B  2018-01-01 00:00:00
    C                    1
    D                    3
    E                train
    F                  foo

    #df排序
    print(df.sort_index(axis=1, ascending=False)) #根据索引值对各行进行排序(相当于重新排列各列的位置)
    print(df.sort_values(by='E')) #根据内容值对各列进行排序
    
    

         F      E  D    C          B    A
    0  foo   test  3  1.0 2018-01-01  1.0
    1  foo  train  3  1.0 2018-01-01  1.0
    2  foo   test  3  1.0 2018-01-01  1.0
    3  foo  train  3  1.0 2018-01-01  1.0
         A          B    C  D      E    F
    0  1.0 2018-01-01  1.0  3   test  foo
    2  1.0 2018-01-01  1.0  3   test  foo
    1  1.0 2018-01-01  1.0  3  train  foo
    3  1.0 2018-01-01  1.0  3  train  foo

    indexes = pd.date_range('20180101', periods=6)
    df3 = pd.DataFrame(np.arange(24).reshape(6, 4), index=indexes, columns=['A', 'B', 'C', 'D'])
    print(df3)
    print()
    #选择column
    print(df3['A'])
    print()
    print(df3.A)
    
    

                 A   B   C   D
    2018-01-01   0   1   2   3
    2018-01-02   4   5   6   7
    2018-01-03   8   9  10  11
    2018-01-04  12  13  14  15
    2018-01-05  16  17  18  19
    2018-01-06  20  21  22  23
    2018-01-01     0
    2018-01-02     4
    2018-01-03     8
    2018-01-04    12
    2018-01-05    16
    2018-01-06    20
    Freq: D, Name: A, dtype: int32
    2018-01-01     0
    2018-01-02     4
    2018-01-03     8
    2018-01-04    12
    2018-01-05    16
    2018-01-06    20
    Freq: D, Name: A, dtype: int32
                A  B   C   D
    2018-01-01  0  1   2   3
    2018-01-02  4  5   6   7
    2018-01-03  8  9  10  11

    #选择行, 类似limit语句
    print(df3[0:0])
    print()
    print(df3[0:3])
    print()
    print(df3['20180103':'20180105'])
    
    

    Empty DataFrame
    Columns: [A, B, C, D]
    Index: []
                A  B   C   D
    2018-01-01  0  1   2   3
    2018-01-02  4  5   6   7
    2018-01-03  8  9  10  11
                 A   B   C   D
    2018-01-03   8   9  10  11
    2018-01-04  12  13  14  15
    2018-01-05  16  17  18  19

    print(df3.loc['20180102']) #返回指定行构成的序列
    
    

    A    4
    B    5
    C    6
    D    7
    Name: 2018-01-02 00:00:00, dtype: int32

    print(df3.loc['20180103', ['A','C']]) #列筛选
    print()
    print(df3.loc['20180103':'20180105', ['A','C']]) #子df,类似select A, C from df limit ...
    print()
    print(df3.loc[:, ['A', 'B']])
    
    

    A     8
    C    10
    Name: 2018-01-03 00:00:00, dtype: int32
                 A   C
    2018-01-03   8  10
    2018-01-04  12  14
    2018-01-05  16  18
                 A   B
    2018-01-01   0   1
    2018-01-02   4   5
    2018-01-03   8   9
    2018-01-04  12  13
    2018-01-05  16  17
    2018-01-06  20  21

    print(df3);print()
    print(df3.iloc[1]);print()
    print(df3.iloc[1,1]);print()
    print(df3.iloc[:,1]);print()
    print(df3.iloc[0:3,1:3]);print()
    print(df3.iloc[[1,3,5],[0,2]]) #行可以不连续,limit做不到
    
    

                 A   B   C   D
    2018-01-01   0   1   2   3
    2018-01-02   4   5   6   7
    2018-01-03   8   9  10  11
    2018-01-04  12  13  14  15
    2018-01-05  16  17  18  19
    2018-01-06  20  21  22  23
    A    4
    B    5
    C    6
    D    7
    Name: 2018-01-02 00:00:00, dtype: int32
    5
    2018-01-01     1
    2018-01-02     5
    2018-01-03     9
    2018-01-04    13
    2018-01-05    17
    2018-01-06    21
    Freq: D, Name: B, dtype: int32
                B   C
    2018-01-01  1   2
    2018-01-02  5   6
    2018-01-03  9  10
                 A   C
    2018-01-02   4   6
    2018-01-04  12  14
    2018-01-06  20  22

    # print(df3.ix[:3, ['A', 'C']])\
    print(df3);print()
    print(df3[df3.A >= 8]) #根据值进行条件过滤,类似where A >= 8条件语句
    
    

                 A   B   C   D
    2018-01-01   0   1   2   3
    2018-01-02   4   5   6   7
    2018-01-03   8   9  10  11
    2018-01-04  12  13  14  15
    2018-01-05  16  17  18  19
    2018-01-06  20  21  22  23
                 A   B   C   D
    2018-01-03   8   9  10  11
    2018-01-04  12  13  14  15
    2018-01-05  16  17  18  19
    2018-01-06  20  21  22  23

    indexes1 = pd.date_range('20180101', periods=6)
    df4 = pd.DataFrame(np.arange(24).reshape(6, 4), index=indexes1, columns=['A', 'B', 'C', 'D'])
    print(df4);print()
    #给某个元素赋值
    df4.A[1] = 1111
    df4.B['20180103'] = 2222
    df4.iloc[3, 2] = 3333
    df4.loc['20180105', 'D'] = 4444
    print(df4);print()
    #范围赋值
    df4.B[df4.A < 10] = -1
    print(df4);print()
    df4[df4.A < 10] = 0
    print(df4);print()
    
    

                 A   B   C   D
    2018-01-01   0   1   2   3
    2018-01-02   4   5   6   7
    2018-01-03   8   9  10  11
    2018-01-04  12  13  14  15
    2018-01-05  16  17  18  19
    2018-01-06  20  21  22  23
                   A     B     C     D
    2018-01-01     0     1     2     3
    2018-01-02  1111     5     6     7
    2018-01-03     8  2222    10    11
    2018-01-04    12    13  3333    15
    2018-01-05    16    17    18  4444
    2018-01-06    20    21    22    23
                   A   B     C     D
    2018-01-01     0  -1     2     3
    2018-01-02  1111   5     6     7
    2018-01-03     8  -1    10    11
    2018-01-04    12  13  3333    15
    2018-01-05    16  17    18  4444
    2018-01-06    20  21    22    23
                   A   B     C     D
    2018-01-01     0   0     0     0
    2018-01-02  1111   5     6     7
    2018-01-03     0   0     0     0
    2018-01-04    12  13  3333    15
    2018-01-05    16  17    18  4444
    2018-01-06    20  21    22    23

    indexes1 = pd.date_range('20180101', periods=6)
    df4 = pd.DataFrame(np.arange(24).reshape(6, 4), index=indexes1, columns=['A', 'B', 'C', 'D'])
    print(df4);print()
    #添加一列
    df4['E'] = np.NaN
    print(df4);print()
    #由于index没对齐,原df没有的行默认为NaN,类型为float64,多出的行丢弃
    df4['F'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20180102', periods=6))
    print(df4);print()
    print(df4.dtypes)
    
    

                 A   B   C   D
    2018-01-01   0   1   2   3
    2018-01-02   4   5   6   7
    2018-01-03   8   9  10  11
    2018-01-04  12  13  14  15
    2018-01-05  16  17  18  19
    2018-01-06  20  21  22  23
                 A   B   C   D   E
    2018-01-01   0   1   2   3 NaN
    2018-01-02   4   5   6   7 NaN
    2018-01-03   8   9  10  11 NaN
    2018-01-04  12  13  14  15 NaN
    2018-01-05  16  17  18  19 NaN
    2018-01-06  20  21  22  23 NaN
                 A   B   C   D   E    F
    2018-01-01   0   1   2   3 NaN  NaN
    2018-01-02   4   5   6   7 NaN  1.0
    2018-01-03   8   9  10  11 NaN  2.0
    2018-01-04  12  13  14  15 NaN  3.0
    2018-01-05  16  17  18  19 NaN  4.0
    2018-01-06  20  21  22  23 NaN  5.0
    A      int32
    B      int32
    C      int32
    D      int32
    E    float64
    F    float64
    dtype: object

    df_t = pd.DataFrame(np.arange(24).reshape(6, 4), index=[1,2,3,4,5,6], columns=['A', 'B', 'C', 'D'])
    df_t.iloc[0, 1] = np.NaN
    df_t.iloc[1, 2] = np.NaN
    df = df_t.copy()
    print(df);print()
    print(df.dropna(axis=0, how='any'));print()
    df = df_t.copy()
    print(df.dropna(axis=1, how='any'));print()
    df = df_t.copy()
    df.C = np.NaN
    print(df);print()
    print(df.dropna(axis=1, how='all'));print()
    
    

        A     B     C   D
    1   0   NaN   2.0   3
    2   4   5.0   NaN   7
    3   8   9.0  10.0  11
    4  12  13.0  14.0  15
    5  16  17.0  18.0  19
    6  20  21.0  22.0  23
        A     B     C   D
    3   8   9.0  10.0  11
    4  12  13.0  14.0  15
    5  16  17.0  18.0  19
    6  20  21.0  22.0  23
        A   D
    1   0   3
    2   4   7
    3   8  11
    4  12  15
    5  16  19
    6  20  23
        A     B   C   D
    1   0   NaN NaN   3
    2   4   5.0 NaN   7
    3   8   9.0 NaN  11
    4  12  13.0 NaN  15
    5  16  17.0 NaN  19
    6  20  21.0 NaN  23
        A     B   D
    1   0   NaN   3
    2   4   5.0   7
    3   8   9.0  11
    4  12  13.0  15
    5  16  17.0  19
    6  20  21.0  23

    df = df_t.copy()
    print(df);print()
    print(df.isna());print()
    print(df.isnull().any());print() #isnull是isna别名,功能一样
    print(df.isnull().any(axis=1));print()
    print(np.any(df.isna() == True));print()
    print(df.fillna(value=0)) #将NaN赋值
    
    

        A     B     C   D
    1   0   NaN   2.0   3
    2   4   5.0   NaN   7
    3   8   9.0  10.0  11
    4  12  13.0  14.0  15
    5  16  17.0  18.0  19
    6  20  21.0  22.0  23
           A      B      C      D
    1  False   True  False  False
    2  False  False   True  False
    3  False  False  False  False
    4  False  False  False  False
    5  False  False  False  False
    6  False  False  False  False
    A    False
    B     True
    C     True
    D    False
    dtype: bool
    1     True
    2     True
    3    False
    4    False
    5    False
    6    False
    dtype: bool
    True
        A     B     C   D
    1   0   0.0   2.0   3
    2   4   5.0   0.0   7
    3   8   9.0  10.0  11
    4  12  13.0  14.0  15
    5  16  17.0  18.0  19
    6  20  21.0  22.0  23

    data = pd.read_csv('D:/pythonwp/test/student.csv')
    print(data)
    data.to_pickle('D:/pythonwp/test/student.pickle')
    
    

       id     name  age  gender
    0   1       牛帅   23    Male
    1   2      gyb   89    Male
    2   3      xxs   27    Male
    3   4      hey   24  Female
    4   5    奥莱利赫本   66  Female
    5   6  Jackson   61    Male
    6   7       牛帅   23    Male

    df0 = pd.DataFrame(np.ones((3, 4)) * 0, columns=['A', 'B', 'C', 'D'])
    df1 = pd.DataFrame(np.ones((3, 4)) * 1, columns=['A', 'B', 'C', 'D'])
    df2 = pd.DataFrame(np.ones((3, 4)) * 2, columns=['A', 'B', 'C', 'D'])
    print(df0); print()
    print(df1); print()
    print(df2); print()
    res = pd.concat([df0, df1, df2], axis = 0)
    print(res); print()
    res = pd.concat([df0, df1, df2], axis = 0, 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
         A    B    C    D
    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
         A    B    C    D
    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
    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

    df0 = pd.DataFrame(np.ones((3, 4)) * 0, columns=['A', 'B', 'C', 'D'])
    df1 = pd.DataFrame(np.ones((3, 4)) * 1, columns=['E', 'F', 'C', 'D'])
    res = pd.concat([df0, df1], ignore_index=True)
    print(res);print()
    res = pd.concat([df0, df1], join='outer', ignore_index=True)
    print(res);print()
    res = pd.concat([df0, df1], join='inner',ignore_index=True)
    print(res);print()
    
    

         A    B    C    D    E    F
    0  0.0  0.0  0.0  0.0  NaN  NaN
    1  0.0  0.0  0.0  0.0  NaN  NaN
    2  0.0  0.0  0.0  0.0  NaN  NaN
    3  NaN  NaN  1.0  1.0  1.0  1.0
    4  NaN  NaN  1.0  1.0  1.0  1.0
    5  NaN  NaN  1.0  1.0  1.0  1.0
         A    B    C    D    E    F
    0  0.0  0.0  0.0  0.0  NaN  NaN
    1  0.0  0.0  0.0  0.0  NaN  NaN
    2  0.0  0.0  0.0  0.0  NaN  NaN
    3  NaN  NaN  1.0  1.0  1.0  1.0
    4  NaN  NaN  1.0  1.0  1.0  1.0
    5  NaN  NaN  1.0  1.0  1.0  1.0
         C    D
    0  0.0  0.0
    1  0.0  0.0
    2  0.0  0.0
    3  1.0  1.0
    4  1.0  1.0
    5  1.0  1.0

    #横向合并
    df0 = pd.DataFrame(np.ones((3, 4)) * 0, index=['1', '2', '3'], columns=['A', 'B', 'C', 'D'])
    df1 = pd.DataFrame(np.ones((3, 4)) * 1, index=['2', '3', '4'], columns=['A', 'B', 'C', 'D'])
    print(df0);print()
    print(df1);print()
    res = pd.concat([df0, df1], axis=1)
    print(res);print()
    res = pd.concat([df0, df1], axis=1, join='inner', ignore_index=True)
    print(res);print()
    res = pd.concat([df0, df1], axis=1, join_axes=[df0.index])
    print(res);print()
    
    

         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
         A    B    C    D
    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
         A    B    C    D    A    B    C    D
    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
         0    1    2    3    4    5    6    7
    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    A    B    C    D
    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

    df0 = pd.DataFrame(np.ones((3, 4)) * 0, index=['1', '2', '3'], columns=['A', 'B', 'C', 'D'])
    df1 = pd.DataFrame(np.ones((3, 4)) * 1, index=['2', '3', '4'], columns=['A', 'B', 'C', 'D'])
    print(df0);print()
    print(df1);print()
    res = df0.append([df1, df1], ignore_index=False)
    print(res);print()
    s = pd.Series([1,2,3,4], index=['A','B','C','E'])
    print(df0.append(s, ignore_index=True))
    
    

         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
         A    B    C    D
    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
         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
    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
    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
         A    B    C    D    E
    0  0.0  0.0  0.0  0.0  NaN
    1  0.0  0.0  0.0  0.0  NaN
    2  0.0  0.0  0.0  0.0  NaN
    3  1.0  2.0  3.0  NaN  4.0

    df1 = pd.DataFrame({'key':['K0', 'K1', 'K2'],
              'A':['A0', 'A1', 'A2'],
              'B':['B0', 'B1', 'B2']})
    df2 = pd.DataFrame({'key':['K3', 'K1', 'K2'],
              'C':['C3', 'C1', 'C2'],
              'D':['D3', 'D1', 'D2']})
    print(df1); print()
    print(df2); print()
    res = pd.merge(df1, df2, on='key')
    print(res); print()
    res = pd.merge(df1, df2, on='key', how='outer')
    print(res); print()
    res = pd.merge(df1, df2, on='key', how='left')
    print(res); print()
    res = pd.merge(df1, df2, on='key', how='right')
    print(res); print()
    
    

        A   B key
    0  A0  B0  K0
    1  A1  B1  K1
    2  A2  B2  K2
        C   D key
    0  C3  D3  K3
    1  C1  D1  K1
    2  C2  D2  K2
        A   B key   C   D
    0  A1  B1  K1  C1  D1
    1  A2  B2  K2  C2  D2
         A    B key    C    D
    0   A0   B0  K0  NaN  NaN
    1   A1   B1  K1   C1   D1
    2   A2   B2  K2   C2   D2
    3  NaN  NaN  K3   C3   D3
        A   B key    C    D
    0  A0  B0  K0  NaN  NaN
    1  A1  B1  K1   C1   D1
    2  A2  B2  K2   C2   D2
         A    B key   C   D
    0   A1   B1  K1  C1  D1
    1   A2   B2  K2  C2  D2
    2  NaN  NaN  K3  C3  D3

    df1 = pd.DataFrame({'key1':['K0', 'K0', 'K1'],
              'key2':['K0', 'K1', 'K1'],
              'A':['A0', 'A1', 'A2'],
              'B':['B0', 'B1', 'B2']})
    df2 = pd.DataFrame({'key1':['K0', 'K0', 'K1', 'K2'],
              'key2':['K0', 'K0', 'K1', 'K2'],
              'C':['C3', 'C1', 'C2', 'C4'],
              'D':['D3', 'D1', 'D2', 'D4']})
    print(df1); print()
    print(df2); print()
    res = pd.merge(df1, df2, on=['key1','key2'])
    print(res); print()
    res = pd.merge(df1, df2, on=['key1','key2'], how='outer', indicator='indi')
    print(res); print()
    
    

        A   B key1 key2
    0  A0  B0   K0   K0
    1  A1  B1   K0   K1
    2  A2  B2   K1   K1
        C   D key1 key2
    0  C3  D3   K0   K0
    1  C1  D1   K0   K0
    2  C2  D2   K1   K1
    3  C4  D4   K2   K2
        A   B key1 key2   C   D
    0  A0  B0   K0   K0  C3  D3
    1  A0  B0   K0   K0  C1  D1
    2  A2  B2   K1   K1  C2  D2
         A    B key1 key2    C    D        indi
    0   A0   B0   K0   K0   C3   D3        both
    1   A0   B0   K0   K0   C1   D1        both
    2   A1   B1   K0   K1  NaN  NaN   left_only
    3   A2   B2   K1   K1   C2   D2        both
    4  NaN  NaN   K2   K2   C4   D4  right_only

    #以上是根据值合并。下面根据index合并
    df1 = pd.DataFrame({'A':['A0', 'A1', 'A2'],
              'B':['B0', 'B1', 'B2']},
              index=['index0', 'index1', 'index2'])
    df2 = pd.DataFrame({'A':['C3', 'C1', 'C2'],
              'D':['D3', 'D1', 'D2']},
              index=['index3', 'index1', 'index2'])
    print(df1); print()
    print(df2); print()
    res = pd.merge(df1, df2, left_index=True, right_index=True)
    print(res); print()
    res = pd.merge(df1, df2, left_index=True, right_index=True, how='outer', suffixes=['_b', '_g'])
    print(res); print()
    
    

             A   B
    index0  A0  B0
    index1  A1  B1
    index2  A2  B2
             A   D
    index3  C3  D3
    index1  C1  D1
    index2  C2  D2
           A_x   B A_y   D
    index1  A1  B1  C1  D1
    index2  A2  B2  C2  D2
            A_b    B  A_g    D
    index0   A0   B0  NaN  NaN
    index1   A1   B1   C1   D1
    index2   A2   B2   C2   D2
    index3  NaN  NaN   C3   D3

    res = df1.join(df2, how='outer', lsuffix='_left', rsuffix='_right') #不用on默认用索引合并
    print(res);print()
    res = df1.join(df2, on='B', how='outer', lsuffix='_left', rsuffix='_right') #用on指定df1的某列和df2的索引合并
    print(res);print()
    
    

           A_left    B A_right    D
    index0     A0   B0     NaN  NaN
    index1     A1   B1      C1   D1
    index2     A2   B2      C2   D2
    index3    NaN  NaN      C3   D3
           A_left       B A_right    D
    index0     A0      B0     NaN  NaN
    index1     A1      B1     NaN  NaN
    index2     A2      B2     NaN  NaN
    index2    NaN  index3      C3   D3
    index2    NaN  index1      C1   D1
    index2    NaN  index2      C2   D2

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt #画图???
    s = pd.Series(np.random.randn(1000), index=np.arange(1000))
    s = s.cumsum()
    #须在命令行执行, jupyter会报错
    #s.plot()
    #plt.show()
    df = pd.DataFrame(np.random.randn(1000, 3), columns=['A', 'B', 'C'])
    df = df.cumsum()
    print(df.head()); print() #head默认显示前5行
    #须在命令行执行, jupyter会报错
    #s.plot()
    #plt.show()
    #须在命令行执行, jupyter会报错
    #'bar', 'hist', 'box', 'kde', 'area', 'scatter', 'hexbin', 'pie'...
    #class_B = df.plot.scatter(x='A', y='B', color='DarkBlue', label='Class B') #画图,scatter<散点图>
    #df.plot.scatter(x='A', y='C', color='DarkRed', label='Class C', class_B=class_B)
    #plt.show()
    
    

              A         B         C
    0 -0.399363 -1.004210  0.641141
    1 -1.970009 -0.608482 -0.758504
    2 -3.081640 -0.617352 -1.143872
    3 -2.174627 -1.383785 -1.011411
    4 -1.415515 -1.892226 -2.511739

    更多关于Python相关内容感兴趣的读者可查看本站专题:《Python操作Excel表格技巧总结》、《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

    希望本文所述对大家Python程序设计有所帮助。

    相关文章

    • wxpython中利用线程防止假死的实现方法

      wxpython中利用线程防止假死的实现方法

      上午抽空学习了一下在wxpython中启用线程的方法,将GUI和功能的执行分开,果然程序运行起来杠杠滴。因为我那个软件的代码暂时不能公开,这里专门写个小程序,作为今天的笔记吧
      2014-08-08
    • windows 10下安装搭建django1.10.3和Apache2.4的方法

      windows 10下安装搭建django1.10.3和Apache2.4的方法

      最近发现很多教程都是在linux上搭建,windows上似乎天生不太适合,但是我还是愿意试试这个坑。下面这篇文章主要给大家介绍了在windows 10系统下安装搭建django1.10.3和Apache2.4的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
      2017-04-04
    • Python3使用PySynth制作音乐的方法

      Python3使用PySynth制作音乐的方法

      这篇文章主要介绍了Python3使用PySynth制作音乐的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
      2019-09-09
    • 在Lighttpd服务器中运行Django应用的方法

      在Lighttpd服务器中运行Django应用的方法

      这篇文章主要介绍了在Lighttpd服务器中运行Django应用的方法,本文所采用的是最流行的FastCGI???包括同时运行多个Django应用的方法,需要的朋友可以参考下
      2015-07-07
    • python集合类型用法分析

      python集合类型用法分析

      这篇文章主要介绍了python集合类型用法,实例分析了Python中集合的功能及常见使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
      2015-04-04
    • pygame实现简易飞机大战

      pygame实现简易飞机大战

      这篇文章主要为大家详细介绍了pygame实现简易飞机大战,python版飞机大战,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2018-09-09
    • 简单使用Python自动生成文章

      简单使用Python自动生成文章

      本文其实是为了应付某些检查,应逼出来的东西,没什么太大的技术含量,想想还是有些思路在里面就拿出来分享给大家了。
      2014-12-12
    • Python获取apk文件URL地址实例

      Python获取apk文件URL地址实例

      需要提取apk文件的特定URL地址的朋友可以看一下这个代码实例。
      2013-11-11
    • 浅谈Python中函数的定义及其调用方法

      浅谈Python中函数的定义及其调用方法

      今天小编就为大家分享一篇浅谈Python中函数的定义及其调用方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
      2019-07-07
    • python得到windows自启动列表的方法

      python得到windows自启动列表的方法

      今天小编就为大家分享一篇python得到windows自启动列表的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
      2018-10-10

    最新评论

  • 在庆祝海南建省办经济特区30周年大会上的讲话 2019-10-07
  • 俄罗斯世界杯F组:球迷风采 2019-09-24
  • 彭于晏廖凡曝姜文“精神洁癖” 2019-09-24
  • 苏州大学研究生支教团网上众筹资助留守儿童 2019-09-23
  • 湖北政务微信排行榜第187期出炉 交警类公号表现亮眼 2019-09-19
  • 【奋斗吧2018】风电检修工——荒原上的“听风者” 2019-08-31
  • 母亲节又送康乃馨?送这样的健康佳品才走心 2019-08-30
  • [酷]此文已经把马克思理论、边际理论、人类需求层次理论、生物学理论、心理学理论、社会管理学理论等理论在哲学层面完美融合了! 2019-08-26
  • 兰芝雪纱修颜气垫隔离霜 2019-07-27
  • “鹊桥”中继星顺利进入使命轨道运行 2019-07-27
  • 超越舆情管理的360度信息决策 2019-07-22
  • 视频陶然居变形记:从路边小饭馆到全国餐饮十强 2019-07-21
  • 防震减灾事业发展的重要理论成果 2019-07-20
  • 珠宝配美人!李冰冰大片衣着性感秀身段 2019-07-20
  • 机器人也能拥有“情商”?这个可以有 2019-07-19
  • 中国体育彩票电子投注 中国竞彩网 三公怎么玩规则 十二生肖彩票怎么买 浙江省十一选五走势图 3d拖胆投注计算器 提供最新最全面的抢庄牌九 重庆时时乐三星走势图 快三有买大小单双吗 豹子下面是组三