我正在使用熊猫read_csv
将CSV文件导入Jupyter笔记本中。
您可以找到CSV file at this link。在标题行之前有两个空行。 当我使用时:
df = pd.read_csv('data/2008-03-21_downloaded.csv', skiprows= 2)
结果df的所有列标题都移了。
如果我添加index_col=False
:
df = pd.read_csv('data/2008-03-21_downloaded.csv', skiprows=[1,2], index_col=False)
结果使用一行数据作为标题,而不是实际的标题名称。
我似乎无法跳过前两行,而是使用实际的标头作为标头[帐户,帐户名,金额等...]
答案 0 :(得分:1)
您的第一版代码还可以。最初的两行为空,应 被跳过。
但是请注意,输入文件中的列名之一(请参见 DATA 视图- 在一段时间内您的帖子中包含)%2C , 这是逗号的十六进制代码。
因此,显然您的标题行已损坏,这就是为什么 DATA 视图中有一堆列标题为 Unnamed 。
一种选择是使用标题行中的详细信息进行排序(替换 每个“%2C”都带有逗号),然后重复阅读。
另一个选择是:
您的第二个版本的代码是错误的,因为行计数从 零。 Excel中的行号不要误导,行号从一个开始。
答案 1 :(得分:0)
csv
文件:%2CTXT_
和%2C
替换为,
p = WindowsPath('E:/PythonProjects/stack_overflow/Articles.csv')
p.parents[0] = WindowsPath('E:/PythonProjects/stack_overflow')
p.stem = Articles
p.suffix = .csv
from pathlib import Path
p = Path('some_path')
files = p.rglob('*.csv') # files in top dir and all subdirs
for file in files:
file_updated = file.parents[0] / f'{file.stem}_updated{file.suffix}'
with file.open('r') as f:
with file_updated.open('w') as f2:
for cnt, line in enumerate(f):
if 'ACCOUNT NAME' in line.split(','):
print(cnt, line)
line = line.replace('%2CTXT_', ',')
line = line.replace('%2C', ',')
print(cnt, line)
f2.write(line)

有关。_updated
后面附加stem
。_updated
文件读入单个数据帧:p = Path('some_path')
files = p.rglob('*_updated.csv')
df = pd.concat([pd.read_csv(file) for file in files])