Отображение значений CSV из 2 файлов, таких как карта в пандах - PullRequest
0 голосов
/ 31 мая 2018

У меня есть два CSV-файла, которые я создал с помощью Python из неструктурированных данных, но я не хочу, чтобы мой скрипт выводил два файла, как только я запустил скрипт на JSON.Допустим, у меня есть файл A со столбцами следующим образом:

Файл 1:

feats   ID     A         B     C       E
AA      123   3343      234   2342    112
BB      121   3342      237   2642    213``
CC      122   3341      232   2352    912
DD      123   3343      233   5342    12
EE      121   3345      235   2442    2112

... и так далее, скажем, 10000 строк различных значений и 6 столбцов.Теперь я хочу проверить эти значения столбца "ID" для файла 2 и объединить значения ID.

Файл 2:

Char_Name           ID    Cosmic Awareness            
  Uatu              123          3.4              
  Galan             121          4.5              ``
  Norrin Radd       122          1.6              
  Shalla-bal        124          0.3              
  Nova              125          1.2      

Этот файл 2 имеет только 5 строк для 5разные значения для б и скажем, 23 значения столбца.Я могу сделать это легко с картой или применить в пандах, но я имею дело с тысячами файлов и не хочу этого делать.Можно ли сопоставить значения файла 2 (столбцы имени и космической осведомленности) с файлом 1, добавив новые столбцы с именами «космический» и «имя» (из файла 2), сопоставив значения с соответствующими значениями идентификатора в файлах 1 и «Файл»2. Ожидаемый результат должен быть примерно таким.

Итоговый файл:

feats   ID     A         B     C       E      Char_Name    Cosmic Awareness
AA      123   3343      234   2342    112     Uatu           3.4
BB      121   3342      237   2642    213``   Galan          4.5
CC      122   3341      232   2352    912     Norrin Radd    1.6
DD      123   3343      233   5342    12      Uatu           3.4
EE      121   3345      235   2442    2112    Galan          4.5

Заранее спасибо, и если есть какой-либо способ улучшить этот вопрос, предложения приветствуются.Я включу их здесь.Я добавил ожидаемый результат выше.

1 Ответ

0 голосов
/ 31 мая 2018

Я думаю, нужно glob для всех имен файлов, а затем в понимании списка создать DataFrame:

from functools import reduce
import glob

files = glob.glob('files/*.csv')
dfs = [pd.read_csv(fp) for fp in files]

Last merge вместе:

df = reduce(lambda left,right: pd.merge(left,right,on='ID'), dfs)

Для outer возможно соединение concat:

import glob

files = glob.glob('files/*.csv')
dfs = [pd.read_csv(fp, index_col=['ID']) for fp in files]

df = pd.concat(dfs, axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...