【问题标题】:Exporting Python results to CSV将 Python 结果导出到 CSV
【发布时间】:2016-11-10 04:42:39
【问题描述】:

请放轻松,我是学生!

我无法将以下代码的结果导出为 CSV。对于每个循环(硬币翻转),我需要将结果导出到名为 RESULTS.CSV 的 CSV 作为新 ROW。

我在 StackOverflow 上尝试了大约四种不同的方法,但到目前为止都没有成功。我很难理解语法/逻辑。我讨厌问这个问题并且总是尽量避免它,但是有人介意向我展示一个简单的解决方案,以便我可以剖析逻辑吗? (而不是参考一篇文章,因为我已经尝试理解它们但遇到了麻烦)

版本:Python 3.5

import random

flipcount=int(input("How many times should I flip a coin?\n###:"))

samples = [ random.randint(1, 2) for i in range(flipcount) ]
heads = samples.count(1)
tails = samples.count(2)

for s in samples:
    msg = 'Heads' if s==1 else 'Tails'
    print(msg)

print ("Heads count=%d, Tails count=%d" % (heads, tails))

这是一次失败的尝试……我相信我已经对这个主题的研究已经饱和了,而且我自己也很困惑……

import random
import csv

flipcount=int(input("How many times should I flip a coin?\n###:"))


samples = [ random.randint(1, 2) for i in range(flipcount) ]
heads = samples.count(1)
tails = samples.count(2)
writer = csv.writer(w)

for s in samples:
    msg = 'Heads' if s==1 else 'Tails'
    print(msg)
    with open('some.csv', 'w', newline='') as f:
        writer.writerows(msg)

print ("Heads count=%d, Tails count=%d" % (heads, tails))

【问题讨论】:

  • 我认为发布失败的尝试会有所帮助。另外,请查看旧的 stackoverflow 问题,因为这个问题不是新问题。
  • 你应该发布预期的输出......我们不知道你是否想写所有的尝试和/或只是最后的消息......

标签: python python-3.x csv random export-to-csv


【解决方案1】:
import pandas as pd
import numpy as np
#get the flipcount
flipcount = int(input("How many times should I flip a coin?\n###:"))
samples = np.random.randint(0, 2, size = flipcount)
#create a pandas dataframe
data = pd.DataFrame(["heads" if i == 1 else "Tails" for i in samples])
#create a csv file
data.to_csv("data.csv", index=False, header=False)

【讨论】:

  • 哇哦!...如此简单。我没有看到我正在阅读的文章中引用的 to_csv。非常感谢。这极大地简化了我的代码并教会了我一些东西。干杯
  • 还想提一下,您的版本在实际抛硬币时似乎要快得多。我可以很快完成 1,000,000 次翻转。再次感谢您提供的洞察力和新工具供我学习。
  • 不客气 :)。 Numpy 实际上是一个快速的野兽,哈哈。
  • 看看它为什么这么快 - stackoverflow.com/questions/8385602/…
  • 非常有趣的阅读!谢谢你。最后但并非最不重要的一点是,我如何告诉 pandas 将一列限制为 100 万个结果并自动将接下来的 100 万个结果放入下一列?例如,第一列将填充 1m 行,然后程序将继续运行,但将接下来的 1m 行放入第二列,以此类推?
【解决方案2】:

这会奏效。现在,您不再只是打印结果,而是将它们附加到列表“数据”中。每行“数据”都将包含您的一个结果。然后您将列表“数据”写入一个 csv 文件,看起来就像您请求的那样。

import csv 

data = []
for s in samples:
    msg = 'Heads' if s==1 else 'Tails'
    data.append(msg)

with open('flip_file.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerows(data)

【讨论】:

猜你喜欢
  • 2017-02-03
  • 1970-01-01
  • 2018-02-04
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多