pandas dataframe groupby on multiindex

时间:2018-02-22 00:11:49

标签: python python-2.7 pandas dataframe

我正在使用Pandas数据帧来读取excel文件并对其进行一些操作。我有一个包含多行的标题,现在我想按几个列值进行分组。但是,我无法找到解决方案。

示例Excel

    name                     address         contact_info   
    first_name  last_name   street  city    mobile  email
1   AAA         BBB         XXX     YYY     102020  aaa@xyz.com
2   111         222         333     444     239393  bbb@xyz.com
3   BBB         333         XXX     dddd    102020  aaa@xyz.com

我想通过stree名称进行分组,并从其他列中查找vaules 我尝试了这个,但它不能找到街道,因为它是多索引。

df = pd.read_excel("test.xlsx", header=[0, 1], sheet_name="Sheet1")
print df.groupby("street", level=-1)[["first_name", "last_name", "email"]].apply(list)

1 个答案:

答案 0 :(得分:0)

您需要在任何地方提供元组列表:

cols = [
           ('name', 'first_name'), 
           ('name', 'last_name'), 
           ('contact_info', 'email')
]
df.groupby([('address', 'street')])[cols].apply(pd.Series.tolist)

# or, alternatively,
# df.groupby(df.address.street)[cols].apply(pd.Series.tolist)

(address, street)
333                            [[111, 222, bbb@xyz.com]]
XXX    [[AAA, BBB, aaa@xyz.com], [BBB, 333, aaa@xyz.c...

元组指定MultiIndex列选择。