【发布时间】: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