Итак, я создал новый 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](https://i.stack.imgur.com/iIsVC.png)
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
Как мне написать код для объединения дополнительных полей в последнюю ячейку, если записи строки превышают длину поля? Это лучший способ решить эту проблему? Каковы другие решения, и как лучше, если это возможно?