Append column to pandas dataframe

前端 未结 5 856
悲哀的现实
悲哀的现实 2020-11-29 00:12

This is probably easy, but I have the following data:

In data frame 1:

index dat1
0     9
1     5

In data frame 2:

         


        
相关标签:
5条回答
  • 2020-11-29 00:34

    Both join() and concat() way could solve the problem. However, there is one warning I have to mention: Reset the index before you join() or concat() if you trying to deal with some data frame by selecting some rows from another DataFrame.

    One example below shows some interesting behavior of join and concat:

    dat1 = pd.DataFrame({'dat1': range(4)})
    dat2 = pd.DataFrame({'dat2': range(4,8)})
    dat1.index = [1,3,5,7]
    dat2.index = [2,4,6,8]
    
    # way1 join 2 DataFrames
    print(dat1.join(dat2))
    # output
       dat1  dat2
    1     0   NaN
    3     1   NaN
    5     2   NaN
    7     3   NaN
    
    # way2 concat 2 DataFrames
    print(pd.concat([dat1,dat2],axis=1))
    #output
       dat1  dat2
    1   0.0   NaN
    2   NaN   4.0
    3   1.0   NaN
    4   NaN   5.0
    5   2.0   NaN
    6   NaN   6.0
    7   3.0   NaN
    8   NaN   7.0
    
    #reset index 
    dat1 = dat1.reset_index(drop=True)
    dat2 = dat2.reset_index(drop=True)
    #both 2 ways to get the same result
    
    print(dat1.join(dat2))
       dat1  dat2
    0     0     4
    1     1     5
    2     2     6
    3     3     7
    
    
    print(pd.concat([dat1,dat2],axis=1))
       dat1  dat2
    0     0     4
    1     1     5
    2     2     6
    3     3     7
    
    0 讨论(0)
  • 2020-11-29 00:34

    Just a matter of the right google search:

    data = dat_1.append(dat_2)
    data = data.groupby(data.index).sum()
    
    0 讨论(0)
  • 2020-11-29 00:36

    Just as a matter of fact:

    data_joined = dat1.join(dat2)
    print(data_joined)
    
    0 讨论(0)
  • 2020-11-29 00:49

    You can also use:

    dat1 = pd.concat([dat1, dat2], axis=1)
    
    0 讨论(0)
  • 2020-11-29 00:50

    It seems in general you're just looking for a join:

    > dat1 = pd.DataFrame({'dat1': [9,5]})
    > dat2 = pd.DataFrame({'dat2': [7,6]})
    > dat1.join(dat2)
       dat1  dat2
    0     9     7
    1     5     6
    
    0 讨论(0)
提交回复
热议问题