Как добавить столбец из другого CSV-файла - PullRequest
1 голос
/ 23 октября 2019

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

Это пример:

1.csv                2.csv              3.csv            4.csv and so on...

a   b   c   d        a   b   c   d      a   b   c   d    a   b   c   d
1   2   3   4        8   3   5   7      2   9   4   6    3   6   8   3
4   2   8   3        6   3   6   7      9   3   4   5    3   6   6   8
3   9   4   8        9   3   4   2      4   7   4   4    1   8   3   5 

Я хочу добавить только два столбцаиз каждого файла csv ...

Я попробовал свой скрипт ниже:

import os
import glob
import pandas as pd
import csv

path = "C:/Users/SYIFAAZRA/Documents/belajar_wradlib/Skew-T/"
os.chdir(path)

file = glob.glob("*.csv")

x=0
for files in file:
    x=x+1

    df = pd.read_csv(files, delimiter=',', skiprows=7, usecols=[11, 22])
    df1 = df.merge(df, how='right')
    df2 = pd.concat([df1])

print (df2)

Я хочу создать новый столбец, например ниже:

a   b   a   b   a   b   a   b
1   2   8   3   2   9   3   6
4   2   6   3   9   3   3   6
3   9   9   3   4   7   1   8

canкто-нибудь мне поможет?

1 Ответ

1 голос
/ 23 октября 2019

Поскольку уже отфильтрованные столбцы по параметру usecols создают список DataFrames в цикле:

path = "C:/Users/SYIFAAZRA/Documents/belajar_wradlib/Skew-T/"
os.chdir(path)

filenames = glob.glob("*.csv")

dfs = []
for f in filenames:
    df = pd.read_csv(f, delimiter=',', skiprows=7, usecols=[11, 22])
    dfs.append(df)

Или в понимании списка:

dfs = [pd.read_csv(f, delimiter=',', skiprows=7, usecols=[11, 22]) for f in filenames]

И объединяются с помощью concat с axis=1:

df2 = pd.concat(dfs, axis=1)
print (df2)

Лучшее решение, позволяющее избежать дублирования имен столбцов, - создать MultiIndex с параметром keys, а затем сгладить его с помощью f-string s:

df2 = pd.concat(dfs, axis=1, keys=np.arange(len(dfs)))
df2.columns = [f'{a}_{b}' for a, b in df2.columns]
print (df2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...