我必须将列从一个DataFrame A
复制到另一个DataFrame B
。 A
和B
中的列名不匹配。
最好的方法是什么?有几列是这样的。我是否需要为B["SO"] = A["Sales Order"]
等各列编写内容。
答案 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
创建用于重命名的字典,选择匹配的列,用dict
和DataFrame.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)
还使您能够合并不同大小的日期框架,外部联接等。