合并具有一列差异的两个表,同时将新值保留在正确的列中
Merging two tables with one column difference while keeping new values in the correct column
我正在尝试将两个 table 与除一个以外的所有相同列合并:
table1:
Product Name product_Model 2022-04-19
p1 m1 20$
p2 m2 5$
table 2:
Product Name product_Model 2022-04-20
p1 m1 20$
p2 m2 10$
p3 m3 100$
我希望将它们组合起来,这样最终的输出将如下所示:
Product Name product_Model 2022-04-19 2022-04-20
p1 m1 20$ 20$
p2 m2 5$ 10$
p3 m3 null 100$
我正在使用此代码(删除模型列后):
table1.merge(table2, on='Product Name', how="outer")
这是结果:
Product Name product_Model 2022-04-19 2022-04-20
p1 m1 20$ 20$
p2 m2 5$ 10$
p3 m3 100$
注意 100$ 是如何移动到 '-19* 列的...
编辑:我正在读取和写入 .csv 文件。
您可以在 on
中传递多个值。所以你会:
left = pd.DataFrame(
{
"Name": ["P1", "P2", "P4"],
"Model": ["M1", "M2", "M4"],
"2022-04-19": ["20", "5", "8"]
}
)
right = pd.DataFrame(
{
"Name": ["P1", "P2", "P3"],
"Model": ["M1", "M2", "M3"],
"2022-04-20": ["20", "5", "100"]
}
)
result = pd.merge(left, right, on=["Name", "Model"], how="outer")
result = result.fillna('null')
Name
Model
2022-04-19
2022-04-20
P1
M1
20
20
P2
M2
5
10
P4
M4
8
null
P3
M3
null
100
我正在尝试将两个 table 与除一个以外的所有相同列合并:
table1:
Product Name product_Model 2022-04-19
p1 m1 20$
p2 m2 5$
table 2:
Product Name product_Model 2022-04-20
p1 m1 20$
p2 m2 10$
p3 m3 100$
我希望将它们组合起来,这样最终的输出将如下所示:
Product Name product_Model 2022-04-19 2022-04-20
p1 m1 20$ 20$
p2 m2 5$ 10$
p3 m3 null 100$
我正在使用此代码(删除模型列后):
table1.merge(table2, on='Product Name', how="outer")
这是结果:
Product Name product_Model 2022-04-19 2022-04-20
p1 m1 20$ 20$
p2 m2 5$ 10$
p3 m3 100$
注意 100$ 是如何移动到 '-19* 列的...
编辑:我正在读取和写入 .csv 文件。
您可以在 on
中传递多个值。所以你会:
left = pd.DataFrame(
{
"Name": ["P1", "P2", "P4"],
"Model": ["M1", "M2", "M4"],
"2022-04-19": ["20", "5", "8"]
}
)
right = pd.DataFrame(
{
"Name": ["P1", "P2", "P3"],
"Model": ["M1", "M2", "M3"],
"2022-04-20": ["20", "5", "100"]
}
)
result = pd.merge(left, right, on=["Name", "Model"], how="outer")
result = result.fillna('null')
Name | Model | 2022-04-19 | 2022-04-20 |
---|---|---|---|
P1 | M1 | 20 | 20 |
P2 | M2 | 5 | 10 |
P4 | M4 | 8 | null |
P3 | M3 | null | 100 |