我试图将具有相同列的两个数据框连接起来,但是列的总数不同。
数据框1
SKU DATA QV QC
0 70 2018-01-01 3.0 30.0
1 70 2018-01-02 2.0 20.0
2 70 2018-01-03 1.0 10.0
数据框2
SKU LOJA DATA PVENDA QV QC ESTOQUE_VENDA ESTOQUE_VENDA_UN_COMPRA CURVA_ABC FORNECEDOR
1 70 HD01 2018-01-01 14.07 2.0 20.0 539.0 5390.0 S 7355
2 70 HD01 2018-01-02 13.78 2.0 20.0 539.0 5390.0 S 7355
3 70 HD01 2018-01-03 13.78 2.0 20.0 539.0 5390.0 S 7355
他们两个都有SKU, DATA, QV, QC
我必须通过使用SKU, DATA
作为索引进行分组,并对QV
和QC
求和,以保持数据框2中不常见的列。
预期输出:
SKU LOJA DATA PVENDA QV QC ESTOQUE_VENDA ESTOQUE_VENDA_UN_COMPRA CURVA_ABC FORNECEDOR
1 70 HD01 2018-01-01 14.07 8.0 50.0 539.0 5390.0 S 7355
2 70 HD01 2018-01-02 13.78 4.0 40.0 539.0 5390.0 S 7355
3 70 HD01 2018-01-03 13.78 3.0 40.0 539.0 5390.0 S 7355
当我尝试这个时:
pd.concat([df, df1], axis=1).groupby(['SKU', 'DATA'], axis=1).sum()
但是我遇到了以下错误:
ValueError: Grouper for 'SKU' not 1-dimensional
答案 0 :(得分:3)
您应该做merge
而不是concat
df2.drop(['QV','QC'],1).merge(df1.groupby(['SKU', 'DATA'],as_index=Fasle).sum()
,on = ['SKU','DATA'])
答案 1 :(得分:3)
pd.concat(df1.align(df2, 'inner', 1)) \
.groupby(['SKU', 'DATA'], as_index=False).sum() \
.merge(df2.drop(['QV', 'QC'], 1))
SKU DATA QV QC LOJA PVENDA ESTOQUE_VENDA ESTOQUE_VENDA_UN_COMPRA CURVA_ABC FORNECEDOR
0 70 2018-01-01 5.0 50.0 HD01 14.07 539.0 5390.0 S 7355
1 70 2018-01-02 4.0 40.0 HD01 13.78 539.0 5390.0 S 7355
2 70 2018-01-03 3.0 30.0 HD01 13.78 539.0 5390.0 S 7355