【问题标题】:Divide two Pandas Pivoted Tables and generate third table with result of division between the two tables划分两个 Pandas Pivoted Tables 并生成第三个表,其中两个表之间的划分结果
【发布时间】:2020-06-01 00:32:34
【问题描述】:

我有两个数据框 df1 和 df2,其中

1) 我为 df1 应用了数据透视表,其中包含表中项目值的总和。

下面是python代码

df_val = pd.pivot_table(df1, values = ['ITEM VALUE'], index=['B', 'C', 'D'], columns = ['Year','A'], aggfunc={'ITEM VALUE': sum})

Pivot table of df_val

2) 我也为 df2 应用了数据透视表,其中包含 TABLE 中 PART COUNT 的总和。

下面是python代码

df_cot = pd.pivot_table(df2, values = ['PART COUNT'], index=['B', 'C', 'D'], columns = ['Year','A'],aggfunc={'PART COUNT':sum})

Pivot table of df_cot

我想要实现的是将新列“CPI DATA”添加到 DataFrame df3,它应该具有将 df_cot 中的“PART COUNT”列与 df_val 中的“ITEM VALUE”列相除的结果。

我已经尝试过代码

df3['CPI DATA']= df_cot['PART COUNT'] / df_val['ITEM VALUE']

并且输出为“CPI DATA”列生成为“NAN”。

如何用两张表相除的结果生成第三张表? 下面是我要生成的所需表格..

Required OUTPUT table

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我将由您来决定您需要如何处理两个表之间的不一致 - 一些键存在于一个而不是另一个 - 但我建议不要跨多个表和 @987654321 进行计算先@他们。

    如果您只想保留两个表中都存在的条目,您可以执行以下操作:

    import pandas as pd
    
    df_combined = pd.merge(df_cot, df_val, how = "inner", on = ["A", "B", "C", "D", "YEAR"])
    
    df_combined["CPI DATA"] = df_combined["PART COUNT"] / df_combined["ITEM VALUE"]
    

    how 参数更改为leftrightouter 将在保持另一个表中没有相应条目的行方面做不同的事情,相当于SQL JOIN

    对我来说,最好不要在加入之前对单独的表进行操作,因为 Panda 强大的索引结构可以做很多你意想不到的事情。

    【讨论】:

      猜你喜欢
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多