Использование Pandas для преобразования CSV-данных в числа при объединении в Excel

#python #pandas #dataframe #concatenation

#python #pandas #фрейм данных #Объединение

Вопрос:

Я пишу небольшую программу для объединения данных измерений из нескольких CSV-файлов. в один файл Excel. У меня почти вся программа написана и работает, единственное, что я пытаюсь сделать, это заставить данные из CSV-файлов автоматически превращаться в числа, когда dataframe помещает их в файл 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"directorynamedatafiles*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)
  

Заранее спасибо

Ответ №1:

Вы имеете в виду:

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

Таким образом, когда вы читаете dataframe, вы можете преобразовать все свои столбцы, например, таким образом.

Другое решение заключается в том, чтобы при чтении вашего csv приводить столбцы с помощью dtypes (см. Документацию)

ПРИМЕР

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