【问题标题】:Output and Import list of lists to Pandas DataFrame将列表输出和导入到 Pandas DataFrame
【发布时间】:2014-11-15 19:00:46
【问题描述】:

我希望能够在每次运行函数时附加到 .txt 文件。

我试图写入函数的输出是这样的:

somelist = ['a','b','b','c']
somefloat = -0.64524
sometuple = (235,633,4245,524)
output = tuple(somelist,somefloat,sometuple) (the output does not need to be in tuple format.)

现在,我的输出是这样的:

outfile = open('log.txt','a')
out = str(output)+'\n
outfile.write(out)

这种工作,但我必须像这样导入它:

with open('log.txt', "r") as myfile:
    mydata = myfile.readlines()
    for line in mydata:  
        line = eval(line)

理想情况下,我希望能够将其直接导入到 Pandas DataFrame 中,如下所示:

dflog = pd.read_csv('log.txt')

并让它生成一个三列数据集,第一列包含一个列表(字符串格式很好),第二列包含一个浮点数,第三列包含一个元组(与列表相同)。

我的问题是:

  1. 有没有办法以更容易导入 pandas 的格式附加输出

  2. 有没有更简单的方法来做这件事,这似乎是一个很常见的任务,如果有人把它写成一两行代码,我不会感到惊讶。

【问题讨论】:

  • 预期输出是什么?您能否举一个您希望从 pd.read_csv 命令获得的 pandas 数据框的示例?
  • 输出将是一个三列数据集,第一列包含 ['a','b','b','c'],第二列包含 -0.64524,第三列包含 ( 235,633,4245,524)。

标签: python pandas import output


【解决方案1】:

执行此操作的一种方法是使用自定义分隔符分隔列,例如 '|'

说:

somelist = ['a','b','b','c']
somefloat = -0.64524
sometuple = (235,633,4245,524)
output = str(somelist) + "|" + str(somefloat) + "|" + str(sometuple)

(如果您想要更多列,请使用string.join() 或类似的东西)

那么,和以前一样:

outfile = open('log.txt','a')
out = output + '\n'
outfile.write(out)

就像阅读整个文件一样

pd.read_csv("log.txt", sep='|')

请注意,不鼓励使用列表或元组作为 pandas 中的条目(虽然我找不到官方参考)。为了加快运算速度,您可能会考虑将元组或列表分成单独的列,以便留下浮点数、整数或简单字符串。如果您需要,Pandas 可以轻松处理自动命名。

【讨论】:

  • 这行得通。我不想在列表中给出每个条目并将其元组作为自己的列,因为它们不会是固定数量的项目,我希望能够在无需参考的情况下获取列的内容当我使用输出时的动态列数。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 2016-08-26
  • 2013-10-07
相关资源
最近更新 更多