首页 > 解决方案 > 连接到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, 'sheetname', startrow=0, startcol=1+i, index=False)

提前致谢

标签: pythonpandasdataframeconcatenation

解决方案


你的意思是:

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

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

不同的解决方案是,在读取 csv 以使用 dtypes 转换列时(请参阅文档

例子

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

推荐阅读