我有数据的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
Run Code Online (Sandbox Code Playgroud)
我想计算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)
Run Code Online (Sandbox Code Playgroud)
这给了我:
Counter({(‘12’,’red’,’135’): 21, (‘15’,’blue’,’152’):18, (‘34’,’green’,’123’):16 etc})
Run Code Online (Sandbox Code Playgroud)
很棒,但是我想将其写到文件中。我希望文件具有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)) …Run Code Online (Sandbox Code Playgroud) 这可能是一个非常直截了当的问题,但我无法在其他地方找到答案,所以我会问.查找元素在嵌套列表中出现的次数的最佳方法是什么?例如:
my_list=[[a,b,c,d],[a,b,z,d],[a,c,f,e],[d,w,f,a]]
Run Code Online (Sandbox Code Playgroud)
我如何找到'a'是列表中第一个元素的次数?或者更一般地说,my_list中出现多少次'a'?我想有一种方法可以用collections.Counter做到这一点,但是我还没弄清楚.
编辑
对于my_list,我想要一个输出,a:3当计数它是否是列表的第一个元素.如果问题被改变以查看是否b是第二个元素,那么期望的输出将是b:2
这是一个愚蠢的问题,我知道它是,但由于某种原因,我找不到任何有用的教程来从 Windows 命令提示符运行 python,所以我不得不问你们。我有一个脚本,我需要在一个目录中以 FY*.txt 或 WS*.txt 开头的所有文件上运行。我试过通过命令提示符进入目录并做
for file in FY*.txt; do python my_script.py
Run Code Online (Sandbox Code Playgroud)
这只是告诉我此时“文件”是意外的。我也试过
python my_script.py FY1.txt FY2.txt FY3.txt
Run Code Online (Sandbox Code Playgroud)
和
import sys
inputfilenames=sys.argv[1:27]
for name in inputfilenames:
datafile=open(name,'r')
Run Code Online (Sandbox Code Playgroud)
就像我在 python 脚本本身中打开文件的方式一样。这似乎只在一个文件上运行脚本,而不是所有文件。
我为我的无知道歉,我真的不知道如何使用命令提示符来运行 python 的东西。除了答案,如果有人有任何教程建议,我将非常非常感激。