Python:将系列添加到数据框架中,并没有将数据放在正确的列中。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:将系列添加到数据框架中,并没有将数据放在正确的列中。相关的知识,希望对你有一定的参考价值。
超级长话短说! 我的输出csv文件的数据列数不对!
我每天有几百个文件要摄取,为了测试目的,我只用一个文件。为了测试目的,我只使用一个文件。
在每个文件中,我有多个功能。每个文件都是一个零件的尺寸检测,每个零件都有多个特征被检测。
我创建了空白的输出csv文件,标题为
我循环浏览每个文件
我继续下一个文件
除了在生成的csv文件中,每一步的数据都在正确的列下。该文件中的headers似乎是正确的,但data没有顺序,我不知道如何纠正。
#=========================================================================================
#Start of program Setup
#=========================================================================================
consolidatedHeaders = ['Part_Number', 'Inspection_Routine', 'Inspection_Machine', 'Serial_Number', 'Timestamp', 'Feature',
'LTL', 'Nominal', 'UTL', 'Observation', 'Tool', 'Machine', 'Rework', 'manual_intervention']
#=========================================================================================
#Creating the Consolidated file
#For my testing purposes, this file will not exist and is created with every execution of code
#=========================================================================================
consolidatedFileName = consolidatedPath + '\' + YYYY + MM + '.csv'
if not os.path.exists(consolidatedFileName): #Need to create a consolidated File
with open(consolidatedFileName, 'w+') as c:
c.seek(0)
c.write(', '.join(consolidatedHeaders))
c.write('
')
#c.truncate()
c.close
#=========================================================================================
#Bits of irrelevant code here finding files that are candidates for import and consolidation
#=========================================================================================
#=========================================================================================
#We've now found a file, lets go through it and add each feature and accompanying data
#to a dataframe
#=========================================================================================
df = pd.DataFrame()#consolidatedHeaders, header=0) # This will hold the ingested data, adding headers here caused problems downstream
for each do something: #not actually in code, just showing that this is a loop
#=========================================================================================
#Loop through every feature within the file and append their data to df
#=========================================================================================
observationInfo={'Part_Number' : partNumber,
'Inspection_Routine' : inspectionRoutine,
'Inspection_Machine' : inspectionMachine,
'Serial_Number' : serialNumber,
'Timestamp' : creationDate,
'Feature' : nrpSplit[0][1:],
'Nominal' : nrpSplit[1].strip(),
'UTL' : nrpSplit[2].strip(),
'LTL' : nrpSplit[3].strip(),
'Observation' : nrpLines[whileIndex + 1].strip(),
'Tool' : plhFeatureDF.get_value(0, 15, takeable=True),
'Machine' : plhFeatureDF.get_value(0, 16, takeable=True),
'Rework' : plhFeatureDF.get_value(0, 17, takeable=True),
'manual_intervention' : plhFeatureDF.get_value(0, 18, takeable=True)
}
df = df.append(observationInfo, ignore_index=True)
#=========================================================================================
#df is now complete with each feature from the prior loop
#The following 'print(df.head())' shows the data in the correct columns exactly as it
#should be in the output file
#=========================================================================================
print(df.head()) #this shows the data exactly the way it should be
#=========================================================================================
#add df with ingested data to our consolidated .csv file
#=========================================================================================
with open(consolidatedFile, 'a+') as consolidate:
df.to_csv(consolidate, header=False, index=False)
#=========================================================================================
#Problem!! When opening the resulting .csv file, The data is all in the wrong columns. The
#columns are not in the order of "consolidatedHeader" that i used to create the file or
#in the order of df which is appended to the file.
#=========================================================================================
答案
我已经解决了这个问题。我需要改变
df = pd.DataFrame()#consolidatedHeaders, header=0)
到
df = pd.DataFrame(columns=consolidatedHeaders)
这样,即使数据框是空的,也能对它进行排序,这样,当我将系列数据追加到数据框时,数据就以正确的顺序追加了。
记录一下,在第一行(没有工作的那行),我最初尝试了。
df = pd.DataFrame(consolidatedHeaders, header=0)
也没有成功
以上是关于Python:将系列添加到数据框架中,并没有将数据放在正确的列中。的主要内容,如果未能解决你的问题,请参考以下文章
将 Python Pandas 数据框转换为 JSon 格式并通过使用 Python 添加其列名保存到 MongoDB 数据库中