如何用pd.read_csv()读取CSV至哨兵值#,处理多DataFrame文件?
用pd.read_csv()读取CSV至哨兵值"#"的实现方法
可以实现,但没法直接通过pd.read_csv()的默认参数完成,需要先对文件内容做预处理,再交给pandas读取。
具体步骤
- 先以文本模式打开CSV文件,逐行读取内容,直到碰到内容为
#的行就停止 - 把收集到的行转换成pandas能识别的文本流,再用
pd.read_csv()读取
代码示例
import pandas as pd import io # 替换成你的CSV文件路径 file_path = "your_data.csv" # 读取到哨兵值"#"为止 with open(file_path, "r", encoding="utf-8") as f: target_lines = [] for line in f: cleaned_line = line.strip() # 碰到哨兵值就终止读取 if cleaned_line == "#": break target_lines.append(line) # 将收集的内容转为DataFrame result_df = pd.read_csv(io.StringIO("".join(target_lines))) print(result_df)
说明
pd.read_csv()本身没有内置的自定义哨兵值停止读取的参数,所以需要先手动截断文件内容到哨兵值之前,再用文本流对象io.StringIO包装后,交给pandas解析成DataFrame。如果需要读取后续的DataFrame,也可以用同样的逻辑继续处理文件剩余内容。
内容的提问来源于stack exchange,提问作者Fortranner
相关产品推荐
相关产品推荐

