Необходимо выбрать «второй столбец» из нескольких файлов CSV и сохранить все «вторые столбцы» в одном файле CSV - PullRequest
0 голосов
/ 19 октября 2019

Итак, у меня есть 366 CSV-файлов, и я хочу скопировать их вторые столбцы и записать их в новый CSV-файл. Нужен код для этой работы. Я попробовал некоторые коды, доступные здесь, но ничего не работает. пожалуйста, помогите.

Ответы [ 4 ]

1 голос
/ 20 октября 2019
    filenames = glob.glob(r'D:/CSV_FOLDER' + "/*.csv")

    new_df = pd.DataFrame()

    for filename in filenames:
        df = pd.read_csv(filename)
        second_column = df.iloc[:, 1]
        new_df[f'SECOND_COLUMN_{filename.upper()}'] = second_column
        del(df)

    new_df.to_csv('new_csv.csv', index=False)
1 голос
/ 19 октября 2019

Это можно сделать с помощью шара и панд:

import glob
import pandas as pd

mylist = [f for f in glob.glob("*.csv")]
df = pd.read_csv(mylist[0]) #create the dataframe from the first csv
df = pd.DataFrame(df.iloc[:,1]) #only keep 2nd column
for x in mylist[1:]: #loop through the rest of the csv files doing the same
    t = pd.read_csv(x)
    colName = pd.DataFrame(t.iloc[:,1]).columns
    df[colName] = pd.DataFrame(t.iloc[:,1])
    df.to_csv('output.csv', index=False)
1 голос
/ 19 октября 2019

Предполагая, что все 2-ые столбцы имеют одинаковую длину, вы можете просто перебрать все файлы. Прочитайте их, сохраните 2-й столбец в памяти и постройте новый df по пути.

filenames = ['test.csv', ....]

new_df = pd.DataFrame()

for filename in filenames:
    df = pd.read_csv(filename)
    second_column = df.iloc[:, 1]
    new_df[f'SECOND_COLUMN_{filename.upper()}'] = second_column
    del(df)

new_df.to_csv('new_csv.csv', index=False)
0 голосов
/ 20 октября 2019
    import glob
    import pandas as pd

    mylist = [f for f in glob.glob("*.csv")]
    df = pd.read_csv(csvList[0]) #create the dataframe from the first csv
    df = pd.DataFrame(df.iloc[:,0]) #only keep 2nd column
    for x in mylist[1:]: #loop through the rest of the csv files doing the same
        t = pd.read_csv(x)
        colName = pd.DataFrame(t.iloc[:,0]).columns
        df[colName] = pd.DataFrame(t.iloc[:,0])
        df.to_csv('output.csv', index=False)
...