发布于 2020-08-24 16:00:26
为了获得所需的结果,您必须对数据进行一点转换,但以下是我的解决方案:
1.Imports
import pandas as pd
import numpy as np3.为实务和预算创建两个单独的数据集
#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.406.合并两个数据集
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.36https://stackoverflow.com/questions/63560311
复制相似问题