Python转置数据问题

Python转置数据问题,python,pandas,Python,Pandas,为了计算实际值和目标值之间的差异,我很难理解如何正确地在数据帧中转置数据。像这样做:df['difference']=df['Revenue']-df['Target'],很简单,所以这更多是一个所需输出格式的问题 假设您有一个包含以下列和值的数据帧: Desire输出将是来源的汇总和来源级别的比较。假设有30多个类似于收入、用户和新用户的额外数据点…: 及 非常感谢您的任何建议。Setup 您的列不是唯一的。我将首先将Source和Date移动到索引中并重命名列 df1 = df.

为了计算实际值和目标值之间的差异,我很难理解如何正确地在数据帧中转置数据。像这样做:
df['difference']=df['Revenue']-df['Target']

很简单,所以这更多是一个所需输出格式的问题

假设您有一个包含以下列和值的数据帧:

Desire输出将是来源的汇总和
来源
级别的比较。假设有30多个类似于收入、用户和新用户的额外数据点…:




非常感谢您的任何建议。

Setup

您的列不是唯一的。我将首先将
Source
Date
移动到索引中并重命名列

df1 = df.copy()
df1.Date = pd.to_datetime(df1.Date)
df1 = df1.set_index(['Date', 'Source'])
idx = pd.MultiIndex.from_product([['Revenue', 'Users', 'New Users'], ['Actual', 'Target']])
df1.columns = idx
df1

然后将第一级
移动到
索引

df1 = df1.stack(0)
df1

从这里开始,我将对
['Revenue'、'Users'、'newusers']
的来源进行汇总,并将结果分配给
df2

df2 = df1.groupby(level=-1).sum()
df2

最后:

df2['Difference'] = df2.Actual / df2.Target
df1['Difference'] = df1.Actual / df1.Target

df2

df2['Difference'] = df2.Actual / df2.Target
df1['Difference'] = df1.Actual / df1.Target

df2
df1.stack().unstack([0, 1, -1])