我有一个n-by-mPandas数据帧{
>>> df = DataFrame(columns=['col1'])
>>> df.append(Series([None]), ignore_index=True)
>>> df
Empty DataFrame
Columns: [col1]
Index: []
我将列表存储在这个数据框的单元格中,如下所示。
>>> df['column1'][0] = [1.23, 2.34]
>>> df
col1
0 [1, 2]
出于某种原因,数据帧将此列表存储为字符串而不是列表。
>>> df['column1'][0]
'[1.23, 2.34]'
我有两个问题要问你。
更新
我正在使用的数据帧已从CSV格式保存和加载。这种格式,而不是数据帧本身,将列表从字符串转换为文本。
1)有办法避免这种行为。这里使用loc帮助。
2)将此字符串转换为列表的Pythonic方法。(这可能是您想要的,因为您正在使用的数据帧已经从CSV格式保存和加载,有两种解决方案)。这是对pshep123答案的补充。
我刚刚遇到这个问题,有一个非常简单的解决方案(pandas.eval())。我用的是熊猫0.20.0。
正如您所指出的,当将pandas数据帧保存和加载为
.csv
文件(文本格式)时,通常会发生这种情况。在您的例子中,这是因为列表对象有一个字符串表示,允许它们存储为
.csv
文件。加载.csv
将生成该字符串表示。如果要存储实际的对象,应该使用
DataFrame.to_pickle()
(注意:对象必须是可挑选的!)。要回答第二个问题,可以使用^{} 将其转换回:
相关问题 更多 >
编程相关推荐