如何遍历 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.
我有 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.