Python 如何用一些复杂的数据重新排列Excel数据集?
我对向stack overflow提问很陌生。如果我错过了什么,请告诉我 我正在尝试重新排列excel中的一些数据,如下所示 喜欢: 我已经在堆栈溢出中尝试了一个 我只需要在上面的答案旁边再添加一列,但是用我简短的python知识找不到答案Python 如何用一些复杂的数据重新排列Excel数据集?,python,Python,我对向stack overflow提问很陌生。如果我错过了什么,请告诉我 我正在尝试重新排列excel中的一些数据,如下所示 喜欢: 我已经在堆栈溢出中尝试了一个 我只需要在上面的答案旁边再添加一列,但是用我简短的python知识找不到答案 任何人都可以建议一种比上述链接更复杂的重新排列方式?您必须对数据进行一点转换,才能得到想要的结果,但我的解决方案是: 1.进口 import pandas as pd import numpy as np 从数据中删除合并标题(“预算和实际”)。您可能
任何人都可以建议一种比上述链接更复杂的重新排列方式?您必须对数据进行一点转换,才能得到想要的结果,但我的解决方案是: 1.进口
import pandas as pd
import numpy as np
Item 1/31/2020 2/29/2020 1/31/2020.1 2/29/2020.1
0 A 0.01 0.02 0.03 0.04
1 B 0.20 0.30 0.40 0.50
2 C 0.33 0.34 0.35 0.36
#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”并反映您的日期
df_actuals.columns = ['Item','1/31/2020','2/29/2020' so far so on...]
5.转换行中的日期列
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')
在这一点上你应该看到类似的东西
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.合并两个数据集
pd.merge(df_actuals, df_budget, on=['Item', 'Date'], sort=True)
结果:
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
为了得到想要的结果,您必须对数据进行一点转换,但以下是我的解决方案: 1.进口
import pandas as pd
import numpy as np
Item 1/31/2020 2/29/2020 1/31/2020.1 2/29/2020.1
0 A 0.01 0.02 0.03 0.04
1 B 0.20 0.30 0.40 0.50
2 C 0.33 0.34 0.35 0.36
#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”并反映您的日期
df_actuals.columns = ['Item','1/31/2020','2/29/2020' so far so on...]
5.转换行中的日期列
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')
在这一点上你应该看到类似的东西
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.合并两个数据集
pd.merge(df_actuals, df_budget, on=['Item', 'Date'], sort=True)
结果:
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
请将实际数据包含在代码中,而不是图像中。请考虑更清楚地包括数据和期望输出的最小示例。它使人们更容易帮助你在代码中包含实际的数据,而不是图像。考虑清楚地包括你的数据和你想要的输出的一个最小的例子。这使人们更容易帮助你这太棒了!非常感谢你!这太棒了!非常感谢你!