连接到Excel时使用Pandas将CSV数据转换为数字

问题描述

我正在编写一个小程序,以连接来自多个csv文件的测量负载。到一个Excel文件中。我几乎所有程序都已编写并可以正常工作,我唯一要做的就是从csv文件获取数据,以便在数据帧将数据放入excel文件自动将其转换为数字。 我的代码如下所示:

from pandas import DataFrame,read_csv
import matplotlib.pyplot as plt
import pandas as pd
import os
import csv
import glob


os.chdir(r"directoryname") 

retval = os.getcwd()

print ("Directory changed to %s" % retval)

files = glob.glob(r"directoryname\datafiles*csv") 

print(files)

files.sort(key=lambda x: os.path.getmtime(x))   
writer = pd.ExcelWriter('test.xlsx')       
df = pd.read_csv("datafile.csv",index_col=False)  
df = df.iloc[0:41,1]   
df.to_excel(writer,'sheetname',startrow =0,startcol=1,index=False)

for f in files: 
i+=1
 df = pd.read_csv(f,index_col=False) 
 df = df.iloc[0:41,2]
 df.to_excel(writer,startrow=0,startcol=1+i,index=False)

预先感谢

解决方法

您的意思是:

df.loc[:,'measurements'] = df.loc[:,'measurements'].astype(float)

因此,当您读取数据框时,可以像这样强制转换所有列。

不同的解决方案是,在读取csv以使用dtypes强制转换列时(请参见Documentation

示例

df = pd.read_csv(os.path.join(savepath,'test.csv'),sep=";",dtype={
ID' : 'Int64','STATUS' : 'object' },encoding = 'utf-8' )