【问题标题】:How to iterate through excel sheets and unpivot dataframes. Then append them together into one daraframe如何遍历 excel 工作表和 unpivot 数据框。然后将它们一起附加到一个数据框中
【发布时间】:2020-05-14 02:37:11
【问题描述】:

我有 3 张工作表的 Excel:毛利率、利润率、收入。 他们每个人都有一个具有相同列和行标题的表。

我需要:

1) 遍历每个工作表并保存到数据框中

2) 取消透视每个数据帧

3) 将每个 daraframe 中的值列附加到一个中。

总额:

保证金:

收入:

结果应该是这样的:

如果我使用sheet_name=None,则会收到错误消息:

import pandas as pd
df = pd.read_excel('BudgetData.xlsx', sheet_name=None,index=False)
df_unpv = df.melt(id_vars=['Company'], var_name ='Month', value_name = 'Gross Revenue')
print(df_unpv)

我得到的错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-60-ee1791c449b1> in <module>
      1 import pandas as pd
      2 df = pd.read_excel('BudgetData.xlsx', sheet_name=None,index=False)
----> 3 df_unpv = df.melt(id_vars=['Company'], var_name ='Month', value_name = 'Gross Revenue')
      4 df_unpv
      5 

AttributeError: 'collections.OrderedDict' object has no attribute 'melt'

可以在此处找到带有示例数据的 Excel 文件: https://www.dropbox.com/s/9dsnylng70t5a8i/Count%20Open%20and%20Closed%20at%20Point%20of%20time.pbix?dl=0

【问题讨论】:

  • 首先尝试连接有序字典的值:df = pd.concat(df.values(),sort=False)

标签: python pandas dataframe unpivot melt


【解决方案1】:

您正在尝试从您的 df 对象调用 .melt() 方法,而不是像 docs 所说的那样从 pd 调用它:

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)

参数:
frame : DataFrame id_vars : tuple, list, or ndarray, 用作标识符变量的可选列。

value_vars :元组、列表或 ndarray,可选的要取消透视的列。 如果未指定,则使用所有未设置为 id_vars 的列。

var_name : 用于“变量”列的标量名称。如果没有它 使用 frame.columns.name 或“变量”。

value_name : 标量,默认“值” 用于“值”的名称 列。

col_level : int 或 string,可选 如果列是 MultiIndex 则 用这个关卡融化。

【讨论】:

  • 谢谢,但它给了我一个错误。 'collections.OrderedDict' object has no attribute 'columns'。 @anky_91 解决方案有效。我只需要了解如何附加数据
猜你喜欢
  • 1970-01-01
  • 2021-08-14
  • 2020-10-13
  • 2016-03-06
  • 1970-01-01
  • 2019-08-20
  • 2018-10-28
  • 1970-01-01
  • 2017-03-21
相关资源
最近更新 更多