针对PythonPandas:数据透视表:aggfunc串联而不是np.size或np.sum和pythonpandas数据透视表这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Pandas
针对Python Pandas:数据透视表:aggfunc串联而不是np.size或np.sum和python pandas 数据透视表这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Pandas 数据透视表 - 列和值之间的层次结构、pandas 数据透视表 DF、Pandas 数据透视表列按日期值、Pandas 数据透视表,对值进行排序等相关知识,希望可以帮助到你。
本文目录一览:- Python Pandas:数据透视表:aggfunc串联而不是np.size或np.sum(python pandas 数据透视表)
- Pandas 数据透视表 - 列和值之间的层次结构
- pandas 数据透视表 DF
- Pandas 数据透视表列按日期值
- Pandas 数据透视表,对值进行排序
Python Pandas:数据透视表:aggfunc串联而不是np.size或np.sum(python pandas 数据透视表)
我在数据框中有一些条目,例如:
name,age,phonenumber
A,10,Phone1
A,Phone2
B,21,PhoneB1
B,PhoneB2
C,23,PhoneC
这是我要通过数据透视表实现的目标:
name,phonenumbers,phonenocount
A,"Phone1,Phone2",2
B,"PhoneB1,PhoneB2",2
C,"PhoneC",1
我正在尝试类似的东西:
pd.pivot_table(phonedf,index=['name','age','phonenumbers'],values=['phonenumbers'],aggfunc=np.size)
但是我希望将电话号码作为aggfunc的一部分进行串联。有什么建议 ?
Pandas 数据透视表 - 列和值之间的层次结构
试试:
table.reorder_levels([1,0],axis=1).sort_index(axis=1)
pandas 数据透视表 DF
如果需要计数级别,请使用 MultiIndex.nlevels
:
print(df_pivot.index.nlevels)
3
print(df_pivot.columns.nlevels)
1
Pandas 数据透视表列按日期值
如何解决Pandas 数据透视表列按日期值?
我有一个数据透视表,其中行按日期排序,然后列按字母顺序排列。
我希望以不同的方式查看列顺序。例如,如果 location 在第一行显示一个值,那么我希望它是第一列。
我基本上使用 sort_values 尝试了以下代码的每个版本:
df1 = pd.pivot_table(df1,values = ''num'',index=''date'',columns = ''location_name'',aggfunc = "sum")
result = df1.sort_values((''date''),ascending=False)
// +-----------+---+---+---+---+
// | date | a | b | c | d |
// +-----------+---+---+---+---+
// | 7/31/2021 | | | 1 | |
// | 8/1/2021 | | | 1 | |
// | 8/2/2021 | | | 1 | |
// | 8/3/2021 | | | | 2 |
// | 8/4/2021 | | | | 2 |
// | 8/5/2021 | | | | 2 |
// | 8/6/2021 | | | | 2 |
// | 8/7/2021 | | | | 2 |
// | 8/8/2021 | 3 | | | |
// | 8/9/2021 | 3 | | | |
// | 8/10/2021 | 3 | | | |
// +-----------+---+---+---+---+
所以上面列的顺序应该是 c,d,a,b,日期顺序保持不变。
有什么关于最好的方法的想法吗?
解决方法
试试:
cols = df.iloc[:,1:].apply(pd.Series.first_valid_index).sort_values().index
df = df[[''date'',*cols.tolist()]]
>>> df
date c d a b
0 7/31/2021 1.0 NaN NaN NaN
1 8/1/2021 1.0 NaN NaN NaN
2 8/2/2021 1.0 NaN NaN NaN
3 8/3/2021 NaN 2.0 NaN NaN
4 8/4/2021 NaN 2.0 NaN NaN
5 8/5/2021 NaN 2.0 NaN NaN
6 8/6/2021 NaN 2.0 NaN NaN
7 8/7/2021 NaN 2.0 NaN NaN
8 8/8/2021 NaN NaN 3.0 NaN
9 8/9/2021 NaN NaN 3.0 NaN
10 8/10/2021 NaN NaN 3.0 NaN
Pandas 数据透视表,对值进行排序
如何解决Pandas 数据透视表,对值进行排序
我正在尝试在 Pandas 中创建数据透视表。
df_pivot = df_final.groupby(''bm'').apply(lambda sub: sub.pivot_table(
index=[''Utm_campaign'',''Time''],values=[''Cost'',''Install'',''Show'',''Link_cliks'',''Reg'',''Ftd''],aggfunc=np.sum,margins=True,margins_name=''Total''
))
# Calculation
df_pivot = df_pivot.assign(Instal_cost = df_pivot.Cost/df_pivot.Install)
df_pivot = df_pivot.assign(Reg_cost = df_pivot.Cost/df_pivot.Reg)
df_pivot = df_pivot.assign(FTD_cost = df_pivot.Cost/df_pivot.Ftd)
df_pivot = df_pivot.assign(CTR = df_pivot.Link_cliks/df_pivot.Show*100)
# Replace Inf
df_pivot.replace([np.inf,-np.inf,np.nan],inplace=True)
df_pivot = df_pivot.drop([''Link_cliks'',''Show''],axis=1)
df_pivot = df_pivot.sort_values(by = ["bm",''Utm_campaign''],axis = 0,ascending=[True,False])
我附上了一张 Excel 中的图片,因为它更容易以表格格式查看我想要实现的目标。
我尝试使用 .sort_values() 但我无法对“成本”进行排序。
提前致谢
df_pivot:
bm | Utm_campaign | 时间 | 成本 | Ftd | 安装 | 注册 | 安装成本 | 注册费用 | FTD_cost | 点击率 |
---|---|---|---|---|---|---|---|---|---|---|
name49438 | 总计 | 2,43 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
OPD_DE_SL_name49438 | 11:00 | 2,43 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
name54908 | 总计 | 8,5 | 0 | 2 | 1 | 4,25 | 8,5 | 0 | 1,02 | |
OPD_DE_SL_name54908 | 10:00 | 8,5 | 0 | 2 | 0 | 4,25 | 0 | 0 | 1,02 | |
11:00 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | ||
name56281 | 总计 | 17,76 | 0 | 4 | 3 | 4,44 | 5,92 | 0 | 0,63 | |
OPD_DE_name56281 | 11:00 | 17,63 | ||||||||
name57749 | 总计 | 0,01 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
OPD_DE_SL_name57749 | 10:00 | 0,01 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
11:00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
解决方法
试试:
df_pivot[''ucost''] = df_pivot[''Cost''].str.replace('','','''').astype(int)
df_pivot = df_pivot.sort_values(by = [''ucost'',"bm",''Utm_campaign'',"Time"],axis = 0,ascending=[False,True,False,True]).drop(''ucost'',axis=1)
资源:
关于Python Pandas:数据透视表:aggfunc串联而不是np.size或np.sum和python pandas 数据透视表的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Pandas 数据透视表 - 列和值之间的层次结构、pandas 数据透视表 DF、Pandas 数据透视表列按日期值、Pandas 数据透视表,对值进行排序的相关知识,请在本站寻找。
本文标签: