为什么pandas.DataFrame.apply打印出垃圾?


问题内容

考虑以下简单数据框:

   a  b
0  1  2
1  2  3

我这样执行.apply

In [4]: df.apply(lambda x: [x.values])
Out[4]: 
a    [[140279910807944, 140279910807920]]
b    [[140279910807944, 140279910807920]]
dtype: object

In [5]: df.apply(lambda x: [x.values])
Out[5]: 
a    [[37, 37]]
b    [[37, 37]]
dtype: object

In [6]: df.apply(lambda x: [x.values])
Out[6]: 
a    [[11, 11]]
b    [[11, 11]]
dtype: object

为什么熊猫每次都会打印出垃圾?

我已经验证了v0.20中会发生这种情况。

编辑:寻找答案,而不是解决方法。


问题答案:

它看起来像bug,因此已打开Issue 17487

对我来说,添加tolist

print (df.apply(lambda x: [x.values.tolist()]))
a    [[1, 2]]
b    [[2, 3]]
dtype: object

print (df.apply(lambda x: [list(x.values)]))
a    [[1, 2]]
b    [[2, 3]]
dtype: object