Объедините одни и те же столбцы в двух разных, используя python - PullRequest
1 голос
/ 18 июня 2020

У меня есть несколько файлов csv

csv1:

date A B C
1991 1 2 3

csv2:

date A B C
1991 4 5 6

мне нужно

csv3:

date A_csv1 A_csv2
1991    1      4

csv4:

date B_csv1 B_csv2
1991    2      5

csv5:

date C_csv1 C_csv2
1991    3      6 

как это сделать?

Я использую python и pandas

но почти все результаты поиска - это pandas .merge, это не тот результат, который мне нужен ...

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Используйте concat с параметрами keys и axis=1:

df1 = pd.read_csv(file1, index_col=['date'])
df2 = pd.read_csv(file2, index_col=['date'])

df = pd.concat([df1, df2], axis=1, keys=('csv1','csv2'))
print (df)
     csv1       csv2      
        A  B  C    A  B  C
date                      
1991    1  2  3    4  5  6

И затем выполните итерацию на втором уровне MultiIndex со сглаженными столбцами и запишите в файлы:

for i, g in df.groupby(level=1, axis=1):
    g.columns = [f'{b}_{a}' for a, b in g.columns]
    g.to_csv(f'{i}.csv')
    print (g)

      A_csv1  A_csv2
date                
1991       1       4
      B_csv1  B_csv2
date                
1991       2       5
      C_csv1  C_csv2
date                
1991       3       6

Если файлы находятся в одной папке:

import glob
files = glob.glob('files/*.csv')

df = pd.concat([pd.read_csv(f) for f in files], axis=1, keys=files)
print (df)
0 голосов
/ 18 июня 2020

Я всегда использую pandas функцию конкатенации:

df=pd.read_csv(“csv1.csv”)
do=pd.read_csv(“csv2.csv”)

DF = pd.concat([df , do ] , axis = 1)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...