Consider this simple dataframe:
a b
0 1 2
1 2 3
I perform a .apply
as such:
In [4]: df.apply(lambda x:
I don't have an answer... just a work around
f = lambda x: x.values.reshape(1, -1).tolist()
df.apply(f)
a [[1, 2]]
b [[2, 3]]
dtype: object
I tracked it down to pd.lib.reduce
pd.lib.reduce(df.values, lambda x: [list(x)])
array([list([[1, 2]]), list([[2, 3]]), list([['a', 'b']])], dtype=object)
Versus
pd.lib.reduce(df.values, lambda x: [x])
array([list([array([None, None], dtype=object)]),
list([array([None, None], dtype=object)]),
list([array([None, None], dtype=object)])], dtype=object)
Another work around:
df.apply(lambda x: [list(x)])
It looks like bug, so was opened Issue 17487.
For me working add 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