【发布时间】:2019-11-15 07:59:45
【问题描述】:
enter image description hereenter image description hereenter image description here我有一些csv文件。文件名为 filename1.in.csv 和 filename1.out.csv , filename2.in.csv 和 filename2.out.csv。这些文件位于文件夹和子文件夹中。我正在尝试分别计算 .in.csv 文件和 .out.csv 文件的一些统计值。但最后所有这些都需要逐行写入一个带有标题的csv文件(在我的代码中称为OutputFile)。每行获取输入文件的名称作为 className 以及计算值。我附上了一个 csv 文件的图像,我将其作为输入 (inFile) 来计算统计值。我没有得到想要的输出。给NameError: maxTimeIn, minTimeIn, stdTimeIn, qual1TimeIn, qual2TimeIn, maxLenIn, minLenIn, stdLenIn, qual1LenIn, qua12LenIn, maxTimeOut, minTimeOut, stdTimeOut, qual1TimeOut, qual2TimeOut, maxLenOut, minLenOut, stdLenOut, qual1LenOut, qua12LenOut, className not defined。
我是 Python 新手,所以我不确定我的代码是否会根据需要提供输出,非常感谢任何帮助。谢谢
import os
import pandas as pd
import csv
startdir= '.'
suffix= '.csv'
for root,dirs, files, in os.walk(startdir):
for name in files:
if not name.endswith(suffix):
continue
inFile = os.path.join(root,name)
data = pd.read_csv(inFile)
base = os.path.basename(inFile)
className = os.path.splitext(base)[0]
if inFile.endswith('.in.csv'):
maxTimeIn = data['frame.time_delta_displayed'].max()
minTimeIn = data['frame.time_delta_displayed'].min()
stdTimeIn = data['frame.time_delta_displayed'].std()
qual1TimeIn = data['frame.time_delta_displayed'].quantile(0.25)
qual2TimeIn = data['frame.time_delta_displayed'].quantile(0.5)
maxLenIn = data['frame.len'].max()
minLenIn = data['frame.len'].min()
stdLenIn = data['frame.len'].std()
qual1LenIn = data['frame.len'].quantile(0.25)
qua12LenIn = data['frame.len'].quantile(0.5)
if inFile.endswith('.out.csv'):
maxTimeOut = data['frame.time_delta_displayed'].max()
minTimeOut = data['frame.time_delta_displayed'].min()
stdTimeOut = data['frame.time_delta_displayed'].std()
qual1TimeOut = data['frame.time_delta_displayed'].quantile(0.25)
qual2TimeOut = data['frame.time_delta_displayed'].quantile(0.5)
maxLenOut = data['frame.len'].max()
minLenOut = data['frame.len'].min()
stdLenOut = data['frame.len'].std()
qual1LenOut = data['frame.len'].quantile(0.25)
qua12LenOut = data['frame.len'].quantile(0.5)
csvData = [['maxTimeIn', 'minTimeIn', 'stdTimeIn', 'q1TimeIn', 'q2TimeIn', 'maxLenIn', 'minLenIn', 'stdLenIn', 'q1LenIn', 'q2LenIn', 'maxTimeOut', 'minTimeOut', 'stdTimeOut', 'q1TimeOut', 'q2TimeOut', 'maxLenOut', 'minLenOut', 'stdLenOut', 'q1LenOut', 'q2LenOut','activity'],
[maxTimeIn, minTimeIn, stdTimeIn, qual1TimeIn, qual2TimeIn, maxLenIn, minLenIn, stdLenIn, qual1LenIn, qua12LenIn, maxTimeOut, minTimeOut, stdTimeOut, qual1TimeOut, qual2TimeOut, maxLenOut, minLenOut, stdLenOut, qual1LenOut, qua12LenOut, className]]
with open('/root/Desktop/OutputFile.csv','w') as csvFile:
writer = csv.writer(csvFile)
writer.writerows(csvData)
csvFile.close()
【问题讨论】:
-
请不要发布代码/数据/Tracebacks 的图像。只需复制文本,将其粘贴到您的问题中并将其格式化为代码即可。
-
@wwii 我现在已将我的代码粘贴到问题本身中。谢谢
-
如果您发布 csv 数据的图像,您认为有人会花时间手动重新创建数据以尝试帮助您的可能性有多大。如果您提供足够的信息,包括可以复制并粘贴到编辑器中并重现问题的数据,人们将更有可能试一试。请阅读minimal reproducible example。此外,您应该始终提供完整的 Traceback,格式为代码。
-
你应该用
elif inFile.endswith('.out.csv'):替换第二个 -
如何修复
csvData处的缩进,它应该在for循环而不是if语句下。
标签: python pandas csv wireshark