我有一个pandas数据框,如下所示:
in: df=pd.DataFrame(index=['A','B','C'], columns=['x','y'])
out: x y
A NaN NaN
B NaN NaN
C NaN NaN
我有一个如下所示的列表
o = [[1, 2], [3, 4], [5, 6]]
当我使用上面的列表创建一个新列时,放在行中的值是一个带方括号[]
的列表:
in: df["z"] = o
out: x y z
A NaN NaN [1, 2]
B NaN NaN [3, 4]
C NaN NaN [5, 6]
我希望上面的数据框看起来如下(减去方括号):
x y z
A NaN NaN 1, 2
B NaN NaN 3, 4
C NaN NaN 5, 6
我如何实现上述目标?
答案 0 :(得分:2)
你不能写一些自定义课程。您只能将对象放入DataFrame中。对象确定它们的显示方式。列表显示方括号,因此在DataFrame中显示列表值的方括号。没有显示括号,就无法将列表放在DataFrame中;括号随附一个列表。您可以改为使用元组,但随后您的DataFrame将显示括号:
>>> x = [(1, 2), (3, 4), (5, 6)]
>>> df["z"] = x
>>> df
x y z
A NaN NaN (1, 2)
B NaN NaN (3, 4)
C NaN NaN (5, 6)
当然,您也可以输入包含逗号的字符串,但是您的数据是字符串,因此您无法将它们作为元组或列表进行访问。
如果你想在DataFrame中有一个以某种方式显示自己的对象,你将必须编写自己的类,使用__repr__
以你想要的方式显示自己,然后插入该类的实例在DataFrame中。 DataFrame只存储对象;对象的显示方式由这些对象决定,而不是由DataFrame决定(除非DataFrame在显示太长时将切断显示)。
答案 1 :(得分:0)
你的意思(没有括号)实际上是一种不同的数据类型。 方括号是列表,你需要元组:
in: df['z'] = [tuple(x) for x in o]
out: x y z
A NaN NaN (1, 2)
B NaN NaN (3, 4)
C NaN NaN (5, 6)
[3 rows x 3 columns]
圆括号与python
中没有括号基本相同