数据转置问题

2024-03-02 19:26:24 发布

您现在位置:Python中文网/ 问答频道 /正文

为了计算实际值和目标值之间的差异,我很难弄清楚如何正确地在数据帧中转置数据。像这样做:
df['difference'] = df['Revenue'] - df['Target']
很简单,所以这更像是一个所需输出格式的问题。你知道吗

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

enter image description here

期望输出将是来源和Source级比较的汇总。假设有30多个额外的数据点类似于收入、用户和新用户…enter image description here


以及


enter image description here


非常感谢您的任何建议。你知道吗


Tags: 数据用户sourcetargetdf格式来源差异
1条回答
网友
1楼 · 发布于 2024-03-02 19:26:24

设置

df = pd.DataFrame([
        ['2016-06-01', 15000, 10000, 1000, 900, 100, 50, 'US'],
        ['2016-06-01', 16000, 12000, 1500, 1200, 150, 100, 'UK']
    ], columns=['Date', 'Revenue', 'Target', 'Users', 'Target', 'New Users', 'Target', 'Source'])
df

enter image description here

您的列不是唯一的。我首先将SourceDate移到索引中并重命名列。你知道吗

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

enter image description here

然后将columns的第一级移动到index

df1 = df1.stack(0)
df1

enter image description here

从这里开始,我将对跨['Revenue', 'Users', 'New Users']的源进行求和,并将结果赋给df2。你知道吗

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

enter image description here

最后:

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

df2

enter image description here

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

enter image description here

相关问题 更多 >