【问题标题】:merge few pivot tables in pandas合并熊猫中的几个数据透视表
【发布时间】:2015-08-19 09:53:13
【问题描述】:

如何合并两个 pandas 数据透视表? 当我尝试运行我的代码时出现错误:keyerror

data_pivot= pandas.DataFrame(data.pivot_table(values = 'NR_ACTIONS', index=["HOUR", "OPID", "NAME"], columns='CONTACTED_PERSON_NEW', aggfunc='sum'))
data_pivot.fillna(0, inplace=True)
data2_pivot= pandas.DataFrame(data2.pivot_table(values = 'AMOUNT_PA', index=["HOUR", "OPID", "NAME"], columns='PA_TYPE', aggfunc='sum'))
data2_pivot.fillna(0, inplace=True)
all_data = pandas.merge(data_pivot, data2_pivot, 'left', on = ["HOUR", "OPID", "NAME"] ) 

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:

    我的问题的答案是:

    data_pivot= pandas.DataFrame(data.pivot_table(values = 'NR_ACTIONS', index=["HOUR", "OPID", "NAME"], columns='CONTACTED_PERSON_NEW', aggfunc='sum'))
    data_pivot.fillna(0, inplace=True)
    data_pivot.reset_index( inplace=True)
    data2_pivot= pandas.DataFrame(data2.pivot_table(values = 'AMOUNT_PA', index=["HOUR", "OPID", "NAME"], columns='PA_TYPE', aggfunc='sum'))
    data2_pivot.fillna(0, inplace=True)
    data2_pivot.reset_index( inplace=True)
    all_data = pandas.merge(data_pivot, data2_pivot, 'left', on = ["HOUR", "OPID", "NAME"] )
    

    【讨论】:

    • 太好了,reset_index 做了什么来修复关键错误?谢谢
    • 在 pivot_table 过程之后尝试操作 df 后出现相同的“关键错误”问题。 df.reset_index(inplace=true) 有效!虽然执行匹配函数“.isin”比较两个 df 会导致“NoneType”对象错误,但解决方案是省略“inplace=true”。所以 df.reset_index() 是最终的答案。
    【解决方案2】:

    如果要保留索引,这里最好的解决方案是告诉 pandas 合并左右表的索引。通过这样做,您不需要重置索引。

    data_pivot= pandas.DataFrame(data.pivot_table(values = 'NR_ACTIONS', index=["HOUR", "OPID", "NAME"], columns='CONTACTED_PERSON_NEW', aggfunc='sum'))
    data_pivot.fillna(0, inplace=True)
    data2_pivot= pandas.DataFrame(data2.pivot_table(values = 'AMOUNT_PA', index=["HOUR", "OPID", "NAME"], columns='PA_TYPE', aggfunc='sum'))
    data2_pivot.fillna(0, inplace=True)
    
    all_data = pandas.merge(data_pivot, data2_pivot, left_index=True,right_index=True )
    

    你可以随时去Pandas' doc查看不同的论点

    PS:如果你使用多索引,它可以工作,但你需要小心,另一个DataFrame中的键数(索引或列数)必须与级别数匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-28
      • 2023-01-11
      • 2019-03-03
      • 2019-12-17
      • 1970-01-01
      • 2021-08-21
      • 2017-01-14
      相关资源
      最近更新 更多