分组后在熊猫数据框中显示一对多映射

时间:2018-12-13 03:42:12

标签: python pandas

我有一个这样的DataFrame

import pandas as pd
df = pd.DataFrame({"Name" : ["a", "a", "b", "b", "b"], "Numbers" : [1, 3, 2, 4, 6]})

我想显示它,这样对于每个出现一次(不重复)的名称,其编号a都会在新行中列出。 我可以做到:

df.groupby(["Name"]).agg({"Numbers" : lambda x : list(x)}).reset_index()

显示类似this的显示。我想“展开”列表,以便使其像这样

"a"    1
       3
"b"    2
       4
       6

我该如何处理。我尝试获取"\n".join(list(x)),但是它没有以新行显示,而是以\n字符显示。

1 个答案:

答案 0 :(得分:0)

def unroll(g):
    is_first = True
    num = g[1].values.tolist()
    print(g[0], num[0][0])
    for n in num:
        print(" ", n[0])

for x in df.groupby('Name'):
    unroll(x)