大熊猫将列从一个数据框复制到另一个名称不同的数据框

时间:2019-05-25 08:32:53

标签: python python-3.x pandas

我必须将列从一个DataFrame A复制到另一个DataFrame BAB中的列名不匹配。

最好的方法是什么?有几列是这样的。我是否需要为B["SO"] = A["Sales Order"]等各列编写内容。

3 个答案:

答案 0 :(得分:1)

使用:

df1 = pd.DataFrame({
      'SO':list('abcdef'),
      'RI':[4,5,4,5,5,4],
      'C':[7,8,9,4,2,3],

})

print (df1)
  SO  RI  C
0  a   4  7
1  b   5  8
2  c   4  9
3  d   5  4
4  e   5  2
5  f   4  3

df2 = pd.DataFrame({
         'D':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],
         'F':list('aaabbb')
})

print (df2)
   D  E  F
0  1  5  a
1  3  3  a
2  5  6  a
3  7  9  b
4  1  2  b
5  0  4  b

创建用于重命名的字典,选择匹配的列,用dictDataFrame.join重命名为原始数据-索引值匹配的DataFrame:

d =  {'SO':'Sales Order',
     'RI':'Retail Invoices'}


df11 = df1[d.keys()].rename(columns=d)
print (df11)
  Sales Order  Retail Invoices
0           a                4
1           b                5
2           c                4
3           d                5
4           e                5
5           f                4

df = df2.join(df11)
print (df)
   D  E  F Sales Order  Retail Invoices
0  1  5  a           a                4
1  3  3  a           b                5
2  5  6  a           c                4
3  7  9  b           d                5
4  1  2  b           e                5
5  0  4  b           f                4

答案 1 :(得分:0)

制作缩写词典。并尝试使用此代码。

例如:

full_form_dict =  {'SO':'Sales Order',
                   'RI':'Retail Invoices',}

A_col = list(A.columns)

B_col = [v for k,v in full_form_dict.items() if k in A_col]
# to loop over A_col
# B_col = [v for col in A_col for k,v in full_form_dict.items() if k == col]

答案 2 :(得分:0)

我会使用pd.concat

combiend_df = pd.concat([df1, df2[['column_a', 'column_b']]], axis=1)

还使您能够合并不同大小的日期框架,外部联接等。