Python:将计数器写入 csv 文件

2023-12-20

我有一个包含列的 csv 数据文件‘number’, ’colour’, ’number2’, ’foo’, ’bar’,看起来像:

12, red, 124, a, 15p
14, blue, 353, c, 7g
12, blue, 125, d, 65h
12, red, 124, c, 12d

我想计算 number、color 和 number2 一起出现的次数,例如,上面列表的输出将是:’12, red, 124 :2’,’14, blue, 353: 1’, ’12, blue, 125: 1’。我已经使用以下方法完成了此操作:

import csv
datafile=open('myfile.csv','r')
usefuldata=[] 
for line in datafile: 
    usefuldata.append(line) 
from collections import Counter
outfile1=Counter((line[1],line[2],line[3]) for line in usefuldata)  
print(outfile1)

这给了我:

Counter({(‘12’,’red’,’135’): 21, (‘15’,’blue’,’152’):18, (‘34’,’green’,’123’):16 etc})

这很好,但我想把它写到一个文件中。我希望该文件有 4 列:数字、颜色、数字 2 和计数。我意识到这是一个常见问题,并且我尝试了其他线程上建议的几种不同方法,但没有一个有效。

Newfile=open(‘newfile.csv’,’wb’)
fieldnames=['a','b']
csvwriter=csv.DictWriter(newfile, delimiter=',', fieldnames=fieldnames)
csvwriter.writerow(dict((fn,fn) for fn in fieldnames))
for row in outfile1:
    csvwriter.writerow(row)

And

with open('newfile.csv','wb') as csvfile:
    fieldnames=['number','colour','number2']
    writer=csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow(Counter((line[1],line[2],line[3]) for line in usefuldata))
    countwriter=csv.writer(csvfile, delimiter=', ')
    countwriter.writerow(outfile1)

两者都给我错误

    return self.writer.writerow(self._dict_to_list(rowdict))
TypeError: 'str' does not support the buffer interface

我也尝试过使用泡菜:

import pickle
with open('newfile.csv','wb') as outputfile:
    pickle.dump(outfile1, outputfile)

给我乱码文件。

我目前的尝试是使用

writer=csv.DictWriter(newfile, outfile1)
for line in outfile1:
    writer.writerow(line)

但这给了我一个关于字段名的错误。

我知道这是一个常见的问题,我意识到我只是在挣扎,因为我真的不知道我在做什么——自从我使用 python 以来已经有几年了,我已经忘记了很多。任何帮助将不胜感激。


首先说一下主要问题的原因——

TypeError: 'str' does not support the buffer interface

是您正在以二进制模式打开文件,您应该以文本模式打开文件(不b ).

其次,我想说使用普通的会更容易csv.writer https://docs.python.org/2/library/csv.html#csv.writer than csv.DictWriter() https://docs.python.org/2/library/csv.html#csv.DictWriter就您而言,因为您的字典的创建方式。

将结果写入 csv 的一种方法是 -

#Assuming you have previously created the counter you want to write
#lets say you stored the counter in a variable called cnter
with open('newfile.csv','w') as csvfile:
    fieldnames=['number','colour','number2','count']
    writer=csv.writer(csvfile)
    writer.writerow(fieldnames)
    for key, value in cnter.items():
        writer.writerow(list(key) + [value]) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:将计数器写入 csv 文件 的相关文章

随机推荐

  • 纯JSP页面导航最佳实践?

    在我的 Web 应用程序的各个 JSP 页面之间实现导航链接的最佳方法是什么 假设我有一个list jsp显示项目列表 然后 用户单击其中一项以查看该项目的更多详细信息view jsp 现在我需要一个链接view jsp回到list jsp
  • 我可以使用模型绑定验证 HTTP 请求签名令牌和随机数吗?

    我正在使用 ASP NET MVC 设置一个端点 可以向该端点发出操作和检索数据的请求 基本上是一个 API 我使用 2 legged OAuth 模型来验证请求是否使用密钥和签名方法以及随机数表进行签名 以防止劫持 由于模型绑定在 ASP
  • PHP flock() - 幕后是什么?

    在与 PHP 源码搏斗了半个小时后 我放弃了 P 问题是 在 Gentoo Linux 系统上 PHP freeze 函数调用归结为什么系统调用 我遇到了一些问题 比如每 20 次循环迭代中阻塞 30 秒类问题 我想知道为什么会这样 exa
  • 为什么我在 vue js 中收到“无法读取未定义的属性‘状态’”错误

    我的 store index js 是 import Vue from vue import Vuex from vuex Vue use Vuex export default new Vuex Store state name Alic
  • 反应挂钩。定期运行 useEffect

    我需要定期获取数据并将其更新到屏幕上 我有这个代码 const temperature setTemperature useState useEffect gt fetch urlToWeatherData then function re
  • 从 Excel 中包含逗号分隔值的两个单元格中提取公共值

    有没有一种简单的方法可以从两个以逗号分隔的数字单元格中提取共同的数字 我有单元格 每个单元格中有 12 个逗号分隔的数字 它们并不都是唯一的 有些数字可以重复两次 但不能超过两次 数字都是正数 并且只能是一位或两位数字 我的数据是这样的 它
  • 解析“DateTime.Now”?

    我需要翻译这样的字符串 DateTime Now AddDays 7 转化为它们的等价表达式 我只对 DateTime 类感兴趣 Net 中是否有内置的东西可以帮助我做到这一点 或者我只需要编写自己的小解析器 您可以雇用FLEE http
  • 通知点击事件时的通话活动

    我想在用户下拉通知并点击该通知时调用该活动 我怎样才能做到这一点 Call setLatestEventInfo on the Notification对象 提供一个PendingIntent当他们点击通知抽屉中的您的条目时 就会开始您的活
  • Cypress:使用 cy.intercept() 检查是否尚未进行调用?

    使用 cy intercept 拦截 和存根 几个网络请求 到谷歌标签管理器 但希望在我的测试中尽早进行测试 然后再期望它们被调用 我将如何测试我正在拦截的两条路线haven t被叫了吗 Thanks 您可以利用cy spy命令 cy in
  • 如何在 django admin 中显示布尔属性

    众所周知 显示method在 Django 管理中将值返回为布尔值可以通过设置轻松完成boolean属性 class MyModel models Model def is something self if self something
  • Visual Studio 2022 挂起并显示“正在打开文件...”消息

    当我尝试打开 dbml 文件时 Visual Studio 2022 挂起并显示 正在打开文件 消息 当我打开任何其他文件时不会发生这种情况 我尝试通过以下方式解决这个问题 卸载Devexpress 卸载Visual Studio 2022
  • 通过过滤将消息从 Amazon SNS 路由到 SQS

    在 RabbitMQ 中 可以创建一个交换器 然后将其绑定到多个队列 每个队列都有一个路由键 这使得消息传递架构如下所示 message x foo msg q bar msg q msg logger q 客户端发布消息到message
  • 意外的关键字参数“缓冲” - python 客户端

    我收到错误 getresponse 收到意外的关键字参数 缓冲 完整的错误日志是 INFO Kivy v1 8 0 INFO Logger Record log in C Users Sudheer kivy logs kivy 14 08
  • MySQL select DATETIME 类似到分钟

    我必须比较两个表之间相对于同一时间的结果 但时间戳因记录方式而有所不同 我想获得像这样的结果实施例1但我只得到带星号的值 如实施例2 从比较中删除秒或选择与最接近的 DATETIME 值相对应的值的最佳方法是什么 目前我正在使用这个查询 S
  • 无法接收已发布的消息以在 mqtt paho 上订阅主题

    我正在使用 paho 发送和接收 mqtt 消息 到目前为止 发送消息没有任何问题 我在接收它们时遇到问题 我的代码是 package BenchMQTT import org eclipse paho client mqttv3 IMqt
  • Python SMTPLIB,SSL 库错误 --> smtplib.SMTPAuthenticationError: (535, b'5.7.8 用户名和密码不被接受)

    我的 python 程序有问题 我已在程序中输入了有关我的电子邮件和密码的正确信息 但错误如下所示 import smtplib SSL email email protected cdn cgi l email protection pa
  • 如何将给定文本分解为字典中的单词?

    这是一道面试题 假设你有一个字符串text and a dictionary 一组字符串 你如何崩溃text成子串 使得每个子串都可以在dictionary 例如你可以分解 thisisatext into this is a text u
  • JQuery - 如何在单击链接时更改图像 src

    我正在使用 JQuery 库来显示带有不透明滑动描述的图像 我需要添加链接列表 以便用户可以覆盖单击链接时显示的图像 如何在单击链接时覆盖图库图像
  • Spark 2.3 执行器上的内存泄漏

    我收到内存泄漏警告 理想情况下这是 Spark 错误 直到 1 6 版本为止 并且已得到解决 模式 独立 IDE PyCharm 火花版本 2 3 Python版本 3 6 下面是堆栈跟踪 2018 05 25 15 00 05 WARN
  • Python:将计数器写入 csv 文件

    我有一个包含列的 csv 数据文件 number colour number2 foo bar 看起来像 12 red 124 a 15p 14 blue 353 c 7g 12 blue 125 d 65h 12 red 124 c 12