Pandas 表:我可以在输出中显示小计吗?
假设我有一个非常简单的数据帧,如下所示:Pandas 表:我可以在输出中显示小计吗?,pandas,pivot-table,Pandas,Pivot Table,假设我有一个非常简单的数据帧,如下所示: data={"Label": (1,1,1,2,2,2,2,3,3), "Value": ("a","b","b","b","c","a","b","a","c")} df = pd.DataFrame(data = data) 通过编写pd.pivot\u表(testdf,index=[“Label”,“Value”],values=[“Value”],aggfunc=len),我可以生成如下pivot表: 是否有任何方法可以复制包含顶级聚合的Exc
data={"Label": (1,1,1,2,2,2,2,3,3), "Value": ("a","b","b","b","c","a","b","a","c")}
df = pd.DataFrame(data = data)
通过编写pd.pivot\u表(testdf,index=[“Label”,“Value”],values=[“Value”],aggfunc=len),我可以生成如下pivot表
:
是否有任何方法可以复制包含顶级聚合的Excel数据透视表功能
您在pandas中找不到明确的等价物,但您始终可以将多个函数链接在一起。我将给出一个
groupby
示例:
import pandas as pd
data={"Label": (1,1,1,2,2,2,2,3,3), "Value": ("a","b","b","b","c","a","b","a","c")}
df = pd.DataFrame(data = data)
df["Top_Level_Counts"] = df.groupby("Label").transform("count")
df["Counts"] = df.groupby(["Label","Value"]).transform("count")
print(df)
Label Value Top_Level_Counts Counts
0 1 a 3 1
1 1 b 3 2
2 1 b 3 2
3 2 b 4 2
4 2 c 4 1
5 2 a 4 1
6 2 b 4 2
7 3 a 2 1
8 3 c 2 1
或者像这样的一行(我喜欢):
import pandas as pd
data={"Label": (1,1,1,2,2,2,2,3,3), "Value": ("a","b","b","b","c","a","b","a","c")}
df = pd.DataFrame(data = data)
df["Top_Level_Counts"] = df.groupby("Label").transform("count")
df["Counts"] = df.groupby(["Label","Value"]).transform("count")
print(df)
Label Value Top_Level_Counts Counts
0 1 a 3 1
1 1 b 3 2
2 1 b 3 2
3 2 b 4 2
4 2 c 4 1
5 2 a 4 1
6 2 b 4 2
7 3 a 2 1
8 3 c 2 1
df = (pd.DataFrame(data = data)
.assign(Top_Level_Counts = lambda x:x.groupby("Label").transform("count"))
.assign(Counts = lambda x:x.groupby(["Label","Value"]).transform("count"))
).set_index(["Label","Value"])
print(df)
Top_Level_Counts Counts
Label Value
1 a 3 1
b 3 2
b 3 2
2 b 4 2
c 4 1
a 4 1
b 4 2
3 a 2 1
c 2 1