Python для перечисления цикла - PullRequest
0 голосов
/ 02 февраля 2019

Я читаю несколько CSV-файлов и объединяю их в один CSV-файл.Желаемый результат комбинированных данных выглядит следующим образом:

0   4   6   8   10  12
1   2   5   4   2   1  
5   3   0   1   5   10
....

Но в следующем коде я намерен перейти к столбцу с 0,4,6,8,10,12.

for indx, file in enumerate(files_File1):
    if file.endswith('csv'):  #reading csv filed in the designated folder
        filepath = os.path.join(folder_File1, file) #reading csv filed in the designated folder
        current = pd.read_csv(filepath, header=None) #reading csv filed in the designated folder
        if indx == 0:
            mydata_File1 = current.copy()
            mydata_File1.columns.values[1] = 4
            print(mydata_File1.columns.values)
        else:
            mydata_File1[2*indx+4] = current.iloc[:,1]
            print(mydata_File1.columns.values)

Но вместо этого результат выглядит так, где столбец идет от 0,2,4,6,8,10,12.

0   4   2   6   8   10  12
1   2       5   4   2   1  
5   3       0   1   5   10
....

Я не совсем уверенчто вызывает столбец с именем "2".

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Если по какой-то причине вам нужна панда, то это сработает.Ваш код ссылается на mydata_File1.columns.values, который является именем столбца, а не значением в столбцах.Если это не отвечает на ваш вопрос, пожалуйста, предоставьте более полный ответ на комментарий @ juanpa.arrivillaga.

#! python3
import os
import pandas as pd
import glob

folder_File1 = r"C:\Users\Public\Documents\Python\CombineCSVFiles"
csv_only = r"\*.csv"
files_File1 = glob.glob(f'{folder_File1}{csv_only}')
new_csv = f'{folder_File1}\\newcsv.csv'


mydata_File1 = []

for indx, file in enumerate(files_File1):
    if file == new_csv:
        pass
    else:
        current = pd.read_csv(file, header=None) #reading csv filed in the designated folder
        print (current)
        if indx == 0:
            mydata_File1 = current.copy()
            print(mydata_File1.values)
        else:
            pass
            mydata_File1 = mydata_File1.append(current, ignore_index=True)
            print(mydata_File1.values)

mydata_File1.to_csv(new_csv)
0 голосов
/ 02 февраля 2019

Если вы действительно просто пытаетесь объединить файлы .csv, вам не нужен panda.

#! python3
import glob

folder_File1 = r"C:\Users\Public\Documents\Python\CombineCSVFiles"
csv_only = r"\*.csv"
files_File1 = glob.glob(f'{folder_File1}{csv_only}')
new_csv = f'{folder_File1}\\newcsv.csv'

lines = []
for file in files_File1:
    with open(file) as filein:
        if filein.name == new_csv:
            pass
        else:
            for line in filein:
                line = line.strip()  # or some other preprocessing
                lines.append(line)  # storing everything in memory!

with open(new_csv, 'w') as out_file:
    out_file.writelines(line + u'\n' for line in lines)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...