如何遍历 excel 工作表和逆透视数据框。然后将它们附加到一个数据框中

How to iterate through excel sheets and unpivot dataframes. Then append them together into one daraframe

我有 Excel 和 3 sheets:毛利、利润、收入。 他们每个人都有一个 table 具有相同的列和行 headers。

我需要:

1) 遍历每个 sheet 并保存到数据帧中

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 对象调用 .melt() 方法,而不是像 docs 所说的那样从 pd 调用它:

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

Parameters:
frame : DataFrame id_vars : tuple, list, or ndarray, optional Column(s) to use as identifier variables.

value_vars : tuple, list, or ndarray, optional Column(s) to unpivot. If not specified, uses all columns that are not set as id_vars.

var_name : scalar Name to use for the ‘variable’ column. If None it uses frame.columns.name or ‘variable’.

value_name : scalar, default ‘value’ Name to use for the ‘value’ column.

col_level : int or string, optional If columns are a MultiIndex then use this level to melt.