Исправление дополнительных полей в кадре данных, превышающем длину поля CSV - PullRequest
0 голосов
/ 17 января 2020

Итак, я создал новый csv, объединенный на основе других csv, разделенных \ t. Большинство строк были успешно сопоставлены с соответствующей ячейкой в ​​Excel, за исключением тех, которые превышают количество полей.

b'Skipping line 4046: expected 39 fields, saw 41\nSkipping line 7924: expected 39 fields, saw 40\n'

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

Строка 80 является примером исправления «плохой» строки:

Row 80 is an example of a

path = r'C:\Users\afsulta\.spyder-py3\ISG\master_reten_isg.csv'
files = os.listdir(os.getcwd())
csv_files = [f for f in files if f[-3:] == 'csv' and 'reten_isg' in f] # identify reten_isg files
master = pd.DataFrame()

for file in csv_files:
    df = pd.read_csv(file, skipinitialspace=True, sep='\t', header=0, encoding='latin-1', low_memory=False, delimiter='\t', error_bad_lines=False) # Ignores errors and corrupt data
    df.columns = df.columns.str.strip() # remove whitespace from columns
    df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x) # strip leading and trailing whitespace from rows
    master = master.append(df, ignore_index=True) # concatenate each isg file to master

Как мне написать код для объединения дополнительных полей в последнюю ячейку, если записи строки превышают длину поля? Это лучший способ решить эту проблему? Каковы другие решения, и как лучше, если это возможно?

1 Ответ

0 голосов
/ 17 января 2020

Если я понял ваш вопрос, у вас есть несколько лишних столбцов в некоторых файлах, которые вызывают проблему. Вы можете использовать pandas .concat . Прикрепленное изображение фрагмента того, что я говорю.

enter image description here

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