首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用复杂的方法重新排列Excel数据集?

如何用复杂的方法重新排列Excel数据集?
EN

Stack Overflow用户
提问于 2020-08-24 11:40:35
回答 1查看 42关注 0票数 1

我对提出问题以堆叠溢出非常陌生。如果我漏掉了什么,请告诉我。

我正在尝试重新整理像下面这样的excel的一些数据。

Excel数据

喜欢:

重新排列

我已经在堆栈溢出如何重新排列数据中尝试过了

我只需要在上面的答案旁边再添加一列,但是用我的短蟒蛇知识找不到答案。

任何人都可以建议一种比上面的链接更复杂的重新排列的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-24 16:00:26

为了获得所需的结果,您必须对数据进行一点转换,但以下是我的解决方案:

1.Imports

代码语言:javascript
复制
import pandas as pd
import numpy as np
  1. 从数据中删除合并的标题(“预算和实际”)。您可能希望将列重命名为1/31/2020实际预算和1/31/2020预算。否则,如果您有相同的列名,Pandas将为您带来一个像'.1‘这样的区分符列。下面的示例数据只有几列供演示之用。 项目1/31/2020 2/29/2020 1/31/2020.1 2/29/2020.1 0 A0.01 0.02 0.03 0.04B 0.20 0.30 0.40 0.50 2 C 0.33 0.34 0.35 0.36

3.为实务和预算创建两个单独的数据集

代码语言:javascript
复制
#item name and all budget columns from your dataset 
df_budget = df.iloc[:, 0:12]

# item name and the actuals columns
df_actuals = df.iloc[:, [0,13,14,15,16,17,18,19,20,21,22,22,24,25]] 

4.更正列的名称以删除区分符“.1”并反映日期

代码语言:javascript
复制
df_actuals.columns = ['Item','1/31/2020','2/29/2020' so far so on...]

5.按行转换日期列

代码语言:javascript
复制
df_actuals = df_actuals.melt(id_vars=['Item'], value_vars=['1/31/2020', '2/29/2020'], var_name = 'Date', value_name='Actual')
df_budget = df_budget.melt(id_vars=['Item'], value_vars=['1/31/2020', '2/29/2020'], var_name = 'Date', value_name='Budget')

在这一点上你应该看到这样的事情

代码语言:javascript
复制
    Item    Date    Actual
 0  A   1/31/2020   0.01
 1  B   1/31/2020   0.20


    Item    Date    Budget
0   A   1/31/2020   0.03
1   B   1/31/2020   0.40

6.合并两个数据集

代码语言:javascript
复制
pd.merge(df_actuals, df_budget, on=['Item', 'Date'], sort=True)

结果:

代码语言:javascript
复制
    Item    Date    Actual  Budget
0   A   1/31/2020   0.01    0.03
1   A   2/29/2020   0.02    0.04
2   B   1/31/2020   0.20    0.40
3   B   2/29/2020   0.30    0.50
4   C   1/31/2020   0.33    0.35
5   C   2/29/2020   0.34    0.36
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63560311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档