Python утилита concat для dataframe, создающая декартово произведение, подобное набору данных, при загрузке нескольких кадров данных, созданных несколькими файлами CSV - PullRequest
0 голосов
/ 04 февраля 2020

Я новичок в Python, поэтому не стесняйтесь обращаться со мной как с 5-летним :)

Использование Python 2.7.16 Цель: загрузить несколько файлов CSV в один фрейм данных. Структура файлов CSV: 3 столбца - имя файла, символ, счетчик. Нет заголовков индекса или столбца.

Проблема: файлы, кажется, объединены горизонтально. Полученный DF должен содержать только 3 столбца и несколько сотен строк из всего загруженного нами CSV-файла. Вместо этого мы получаем 1573 столбца и несколько миллионов строк.

files=glob.glob('/my/data/folder/*.csv')
files=list(filter(lambda file: os.stat(file).st_size>0, files))
df=pd.concat(map(functools.partial(pd.read_csv, sep=','), files))

>>> print len(df.columns)
1573

>>> print len(df.index)
3774731

пример входного файла:

/my/data/folder/a1,O:ZZZ\17J20\32.0,339
/my/data/folder/b1,O:ZZZ\17J20\34.0,262
/my/data/folder/c1,O:ZZZ\17J20\36.0,200
/my/data/folder/d1,O:ZZZ\17J20\38.0,129
/my/data/folder/e1,O:ZZZ\17P21\25.0,155
/my/data/folder/f1,O:ZZZ\17P21\26.0,38

field 1: full file path & name
field 2: string
field 3: integer
...