将Pandas数据框中的列复制到另一个数据框,且列名不同。

4
我需要将一个DataFrame A 中的列复制到另一个DataFrame B。然而,AB 中的列名并不相同。有多个这样的列需要复制,我需要为每一列都编写类似于 B["SO"] = A["Sales Order"] 的代码吗?有没有更好的方法?

1
欢迎!请查看如何提出好问题?如何创建一个最小、完整且可验证的示例,以便提出易于理解的问题并获得易于理解的答案。 - sentence
3个回答

4

我会使用 pd.concat

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

同时,它还能让你将不同大小的数据框连接在一起,进行外部连接等操作。


2

使用:

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

创建一个字典来进行重命名,选择匹配的列,使用字典和 DataFrame.join 根据索引值将原始数据框进行重命名 - 数据框需要匹配索引值。"Original Answer" 翻译成 "最初的回答"。
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

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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接