gpt4 book ai didi

Python pivot_table - 添加差异列

转载 作者:行者123 更新时间:2023-12-03 16:11:02 24 4
gpt4 key购买 nike

我是python的新手。我有以下数据框。我能够在 Excel 中旋转。
我想添加差异列(在图像中,我手动添加了它)。
区别在于B-A值。我能够使用 Python 数据透视表复制差异列和总计。下面是我的代码。

table = pd.pivot_table(data, index=['Category'], values = ['value'], columns=['Name','Date'], fill_value=0)
如何添加差异列并计算值?
我怎样才能在底部获得总计?
数据如下
df = pd.DataFrame({
"Value": [0.1, 0.2, 3, 1, -.5, 4],
"Date": ["2020-07-01", "2020-07-01", "2020-07-01", "2020-07-01", "2020-07-01", "2020-07-01"],
"Name": ['A', 'A', 'A', 'B', 'B', 'B'],
"HI Display1": ["X", "Y", "Z", "Z", "Y", "X"]})
我想要数据透视表如下
Pivot table

最佳答案

这是一种方法:

df = pd.DataFrame({
"Name": ["A", "A", "A", "B", "B", "B"],
"Date": "2020-07-01",
"Value": [0.1, 0.2, 3, 2, -.5, 4],
"Category": ["Z", "Y", "X", "Z", "Y", "X"]
})

piv = pd.pivot_table(df, index="Category", columns="Name", aggfunc=sum)
piv.columns = [c[1] for c in piv.columns]
piv["diff"] = piv.B - piv.A
输出( piv )是:
            A    B  diff
Category
X 3.0 4.0 1.0
Y 0.2 -0.5 -0.7
Z 0.1 2.0 1.9
要为 A 和 B 添加“总计”,请执行
piv.loc["total"] = piv.sum()
从“差异”列中删除总计:
piv.loc["total", "diff"] = "" # or np.NaN, if you'd like to be more 
# 'pandas' style.
现在的输出是:
            A    B  diff
Category
X 3.0 4.0 1.0
Y 0.2 -0.5 -0.7
Z 0.1 2.0 1.9
total 3.3 5.5
如果此时您想在类别顶部添加标题“名称”,请执行以下操作:
piv.columns = pd.MultiIndex.from_product([["Name"], piv.columns])
piv就是现在:
         Name          
A B diff
Category
X 3.0 4.0 1.0
Y 0.2 -0.5 -0.7
Z 0.1 2.0 1.9
total 3.3 5.5
要将日期添加到每一列:
date = df.Date.max()
piv.columns = pd.MultiIndex.from_tuples([c+(date,) for c in piv.columns])

==>
Name
A B diff
2020-07-01 2020-07-01 2020-07-01
Category
X 3.0 4.0 1
Y 0.2 -0.5 -0.7
Z 0.1 2.0 1.9
total 3.3 5.5
最后,要为列着色(例如,如果您使用的是 Jupyter),请执行以下操作:
second_col = piv.columns[2]
piv.style.background_gradient("PiYG", subset = [second_col]).highlight_null('white').set_na_rep("")
enter image description here

关于Python pivot_table - 添加差异列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62699017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com