假设我有一个这样的df:
A B
0 John 131234
1 Sam 3454
2 Mandy 6521
3 Frank 134536
另一个df:
X Y Z
0 Erick Green Pencil
1 Sam Red Phone
2 David Orange PC
3 Mandy Blue Notebook
如何将行和列从一个df复制到另一个具有匹配值的行?
我希望的df是:
A B Y Z
0 John 131234
1 Sam 3454 Red Phone
2 Mandy 6521 Blue Notebook
3 Frank 134536
我是python和pandas的新手,我仍然不知道这么做。
感谢。
答案 0 :(得分:0)
import pandas as pd
import numpy as np
df0 = pd.DataFrame(np.array([
('John', 131234),
('Sam', 3454),
('Mandy', 6521),
('Frank', 134536)
]),
columns=['A', 'B']
)
df1 = pd.DataFrame(np.array([
('Erick', 'Green', 'Pencil'),
('Sam', 'Red', 'Phone'),
('David', 'Orange', 'PC'),
('Mandy', 'Blue', 'Notebook')
]),
columns=['X', 'Y', 'Z']
)
# join the two dataframes on the 'name'
# left join into preserve all rows in 'df0'
df = pd.merge(df0, df1, left_on='A', right_on='X', how='left')
# drop the duplicate name column
df.drop('X', axis=1)
答案 1 :(得分:0)
使用pandas merge加入:
df
Out[24]:
A B
0 John 131234
1 Sam 3454
2 Mandy 6521
3 Frank 134536
df1
Out[25]:
X Y Z
0 Erick Green Pencil
1 Sam Red Phone
2 David Orange PC
3 Mandy Blue Notebook
df.merge(df1,left_on='A',right_on='X',how='left').drop('X',1).fillna('')
Out[26]:
A B Y Z
0 John 131234
1 Sam 3454 Red Phone
2 Mandy 6521 Blue Notebook
3 Frank 134536