我在数据框中有一些条目,如:
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的一部分连接起来。 有什么建议吗?
答案 0 :(得分:8)
您可以在agg
:
groupby
功能
df.groupby(['name', 'age'])['phonenumber'].\
agg({'phonecount': pd.Series.nunique,
'phonenumber': lambda x: ','.join(x)
}
)
# phonenumber phonecount
# name age
# A 10 Phone1,Phone2 2
# B 21 PhoneB1,PhoneB2 2
# C 23 PhoneC 1
根据@root和@Jon Clements的更短版本:
df.groupby(['name', 'age'])['phonenumber'].\
agg({'phonecount': 'nunique', 'phonenumber': ','.join})