#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' )