pandas 如何使pd.DataFrame将单元格中的列表值打印为正确的python列表?

jjjwad0x  于 2023-08-01  发布在  Python
关注(0)|答案(2)|浏览(129)
> print(pd.DataFrame({'a': [['x', 'y']]}))

        a
0  [x, y]

字符串
尽管DataFrame单元格包含一个列表,但打印时,它表示为[x, y],而不是['x', 'y']。即使我使用repr()也会发生这种情况。
我可以告诉pandas正确打印列表值吗,例如:

a
0  ["x", "y"]


为什么会发生这种事?Python有一个约定,即repr应该尽可能接近可逆(也就是说,ast.literal_eval(repr(x))应该尽可能地以最小的调整工作)。这种行为非常令人困惑,并且使得调试不相关的错误变得非常棘手(我实际上认为代码中有一个bug,导致列表以字符串的形式存储在DataFrame中)。

mhd8tkvw

mhd8tkvw1#

我们需要在 Dataframe 的to_string方法中应用formatters=[repr],如下所示:

df =  pd.DataFrame({'a': [['x', 'y']]})
print(df.to_string(formatters=[repr]))

字符串
另一个例子:


的数据
p.s.当前的默认行为在我看来已经足够好了,因为它通过更紧凑地打印数据来节省空间。

m4pnthwp

m4pnthwp2#

import pandas as pd

data = {'a': [['x', 'y']]}
data['a'] = [repr(d) for d in data['a']]

df = pd.DataFrame(data)
print(df)

字符串
输出量:

a
0  ['x', 'y']

相关问题