python - 修复数据框中超出 CSV 字段长度的额外字段
问题描述
所以我创建了一个新的 csv,它基于由 \t 分隔的其他 csv 连接。大多数行已成功映射到 Excel 中与其关联的单元格,但少数超出字段数的行除外。
b'Skipping line 4046: expected 39 fields, saw 41\nSkipping line 7924: expected 39 fields, saw 40\n'
我想通过拆分它们并将它们映射到列来修复在一个单元格中包含所有数据的行。最后一列可以保留该行的额外数据。
第 80 行是要修复的“坏”行的示例:
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
如果行的条目超过字段长度,我将如何编写代码将额外的字段组合到最后一个单元格中?这是解决此问题的最佳方法吗?其他解决方案是什么,如果可能的话,最好的解决方案是什么?
解决方案
推荐阅读
- node.js - 如何修复 eslint 配置?
- php - 在 CodeIgniter 中使用 MySQL 查询时出现语法错误
- doctrine - 根据现有的 querybuilder 方法向 querybuilder 添加自定义方法的最佳实践是什么?
- algorithm - 我需要找到以下代码的时间复杂度吗?
- spring - 春季测试休息模板:无法提取响应:没有找到适合响应类型的 HttpMessageConverter
- javascript - 更改图像/svg 以在网页上正确显示横向或纵向
- swift - 触摸手势识别器可清除随机功能的屏幕
- postgresql - PostgreSQL:使用 2 级联接的 COUNT() 行且 ONLY_FULL_GROUP_BY 处于活动状态
- ruby-on-rails - 如何允许用户选择所有货币,但语言有限?
- c - 添加到 FLT_MAX 以导致溢出的最小数字