我在数据框中有一些条目,如:
name, age, phonenumber
A,10, Phone1
A,10,Phone2
B,21,PhoneB1
B,21,PhoneB2
C,23,PhoneC
下面是我试图实现的结果透视表:
name, age, phonenumbers, phonenocount
A,10, "Phone1,Phone2" , 2
B,21, "PhoneB1,PhoneB2", 2
C,23, "PhoneC" , 1
我试着说:
pd.pivot_table(phonedf, index=['name','age','phonenumbers'], values=['phonenumbers'], aggfunc=np.size)
但是我想把电话号码作为aggfunc的一部分连接起来。有什么建议吗?
3条答案
按热度按时间b0zn9rqh1#
您可以在
groupby
之后使用agg
函数:或者根据@root和@Jon Clements提供的更短版本:
mmvthczy2#
这个答案来自这里:https://medium.com/@enricobergamini/creating-non-numeric-pivot-tables-with-python-pandas-7aa9dfd788a7
感谢恩里科·贝尔加米尼写了这篇文章。我也在为此而挣扎。
首先定义输入。
使用Pandaspivot_table可以根据需要重新塑造形状。
输出:
如果要删除列中的多索引,请使用以下命令:
temp.columns = temp.columns.droplevel()
从列索引中删除函数后,可以轻松地重命名它们。
新存储的变量为:
g6ll5ycj3#
透视表使用df表示数据,使用phone表示索引,并在字符串变量中连接代码行。