熊猫在每一栏都有独特的价值观

时间:2017-03-11 22:07:11

标签: pandas

我想在分组数据框的每一列中打印唯一值,以下代码段不能按预期工作:

df = pd.DataFrame({'a' : [1, 2, 1, 2], 'b' : [5, 5, 5, 5], 'c' : [11, 12, 13, 14]})
print(
  df.groupby(['a']).apply(
    lambda df: df.apply(
      lambda col: col.unique(), axis=0))
)

我希望它能打印

1 [5] [11, 13]
2 [5] [12, 14]

虽然还有其他方法,但我想了解这种方法有什么问题。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

print(df.groupby(['a', 'b'])['c'].unique())

a | b |
--+---+---------
1 | 5 | [11, 13]
2 | 5 | [12, 14]

关于您的方法有什么问题 - 当您groupby df然后apply某个功能f时,f的输入将是除非另有说明,否则DataFrame包含所有df列;就像我的代码段中带有['c']一样。因此,您的第一个apply传递的是一个包含3列的DataFrame,第二个apply也是如此。然后你的函数also_print遍历这3列中的每一列并将它们打印出来,这样你就可以为每一组打印3张。