Pandas 熊猫:合并两个Dataframe、添加列和删除重复行
我有两个数据框,比如说,1月和2月的材料库存报告: 一月报告Pandas 熊猫:合并两个Dataframe、添加列和删除重复行,pandas,dataframe,merge,concatenation,row,Pandas,Dataframe,Merge,Concatenation,Row,我有两个数据框,比如说,1月和2月的材料库存报告: 一月报告 code description qty_jan amount_jan WP1 Wooden Part-1 1000 50000 MP1 Metal Part-1 500 5000 GL1 Glass-1 100 2500 code description qty_feb amount_feb WP1 Wooden Part-1 12
code description qty_jan amount_jan
WP1 Wooden Part-1 1000 50000
MP1 Metal Part-1 500 5000
GL1 Glass-1 100 2500
code description qty_feb amount_feb
WP1 Wooden Part-1 1200 60000
MP2 Metal Part-2 300 3000
GL1 Glass-1 50 1250
GL2 Glass-2 200 5000
二月报告
code description qty_jan amount_jan
WP1 Wooden Part-1 1000 50000
MP1 Metal Part-1 500 5000
GL1 Glass-1 100 2500
code description qty_feb amount_feb
WP1 Wooden Part-1 1200 60000
MP2 Metal Part-2 300 3000
GL1 Glass-1 50 1250
GL2 Glass-2 200 5000
为了监控每个物料库存的进度,我想合并两个报告,如下所示:
code description qty_jan amount_jan qty_feb amount_feb
WP1 Wooden Part-1 1000 50000 1200 60000
MP1 Metal Part-1 500 5000 0 0
MP2 Metal Part-2 0 0 300 3000
GL1 Glass-1 100 2500 50 1250
GL2 Glass-2 0 0 200 5000
注:报告中未列出的材料视为零库存
如何合并这两个报告?您可以使用外部联接,然后将缺少的值替换为0
:
df = df1.merge(df2, on=['code','description'], how='outer').fillna(0)
print (df)
v code description qty_jan amount_jan qty_feb amount_feb
0 WP1 Wooden Part-1 1000.0 50000.0 1200.0 60000.0
1 MP1 Metal Part-1 500.0 5000.0 0.0 0.0
2 GL1 Glass-1 100.0 2500.0 50.0 1250.0
3 MP2 Metal Part-2 0.0 0.0 300.0 3000.0
4 GL2 Glass-2 0.0 0.0 200.0 5000.0
另一个想法是:
您可以使用外部联接,然后将缺少的值替换为0
:
df = df1.merge(df2, on=['code','description'], how='outer').fillna(0)
print (df)
v code description qty_jan amount_jan qty_feb amount_feb
0 WP1 Wooden Part-1 1000.0 50000.0 1200.0 60000.0
1 MP1 Metal Part-1 500.0 5000.0 0.0 0.0
2 GL1 Glass-1 100.0 2500.0 50.0 1250.0
3 MP2 Metal Part-2 0.0 0.0 300.0 3000.0
4 GL2 Glass-2 0.0 0.0 200.0 5000.0
另一个想法是:
那么样本数据中是否没有重复的行?是否也可以使用重复的行创建?因此示例数据中没有重复的行?也可以用重复的行创建吗?答案很快。非常感谢。非常快的回答。非常感谢。