我的 CSV 文件有 3 列:姓名、年龄和性别,样本数据是:
AlexÇ39ÇM #Ç#SheebaÇ35ÇF #Ç#RiyaÇ10ÇF
列分隔符是“Ç”,记录分隔符是“#Ç#”。注意第一条记录没有记录分隔符(#Ç#),但所有其他记录都有记录分隔符(#Ç#)。你能告诉我如何读取这个文件并将其存储在数据框中吗?
无论csv
和pandas
模块支持直接读取的CSV文件。但是,由于您需要在进一步处理之前逐行修改文件内容,因此我建议逐行读取文件,根据需要修改每一行并将处理后的数据存储在列表中以供进一步处理。
必要的步骤包括:
readlines()
由于.split()
返回一个字符串元素列表,我们得到一个完整的列表列表,其中每个“子列表”包含/代表一行/记录的数据。可以读取这样格式化的数据,pandas.DataFrame.from_records()
这在这一点上非常方便:
import pandas as pd
with open('myData.csv') as file:
# `.strip()` removes newline character from each line
# `.replace('#;#', '')` removes '#;#' from each line
# `.split(';')` splits at given string and returns a list with the string elements
lines = [line.strip().replace('#;#', '').split(';') for line in file.readlines()]
df = pd.DataFrame.from_records(lines, columns=['Name', 'Age', 'Sex'])
print(df)
评论:
我换Ç
到;
哪个好工作对我来说,由于编码的问题。但是,算法的基本思想仍然相同。
像这样手动读取数据可能会占用大量资源,这在处理较大文件时可能会成为问题。可能有更优雅的方式,我不知道。当遇到性能问题时,尝试分块读取文件或寻找更有效的实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句