python - Python将csv文件转换为数据框
问题描述
我有一个包含以下数据的大型 csv 文件:
2018-09, 100, A, 2018-10, 50, M, 2018-11, 69, H,....
等等。(没有单独行的连续流)
我想把它转换成数据框,看起来像
Col1 Col2 Col3
2018-09 100 A
2018-10 50 M
2018-11 69 H
这是实际数据的简化版本。请建议什么是处理它的最佳方法。
编辑:为了澄清,我的 csv 文件的每一行没有单独的行。所有数据都在一行上。
解决方案
csv
一种解决方案是通过模块和这个算法将你的单行分成块,然后提供给pd.DataFrame
构造函数。请注意,您的数据框将是 dtype object
,因此之后您必须明确地转换数字系列类型。
from io import StringIO
import pandas as pd
import csv
x = StringIO("""2018-09, 100, A, 2018-10, 50, M, 2018-11, 69, H""")
# define chunking algorithm
def chunks(L, n):
"""Yield successive n-sized chunks from l."""
for i in range(0, len(L), n):
yield L[i:i + n]
# replace x with open('file.csv', 'r')
with x as fin:
reader = csv.reader(fin, skipinitialspace=True)
data = list(chunks(next(iter(reader)), 3))
# read dataframe
df = pd.DataFrame(data)
print(df)
0 1 2
0 2018-09 100 A
1 2018-10 50 M
2 2018-11 69 H
推荐阅读
- mysql - 如何使用 boto3 和 AWS-aurora 使用 AWS rds-data 对我的 mysql 查询进行分页?
- roblox - 如果您有 1 级或更高级别的钥匙卡,门会打开
- python - ubuntu 16.04 中 CvBridge 和 ArUco opencv 模块与 ROS 动力学相结合的问题
- cadence-workflow - 维护 Cadence 工作流程信号的顺序
- reactjs - 如何从 Laravel 在 React 中获取 json 响应?
- java - 空请求正文的 Spring bean 验证
- java - 如何解决 Java 中的 NoSuchElementException?
- node.js - 在 mongodb 中有没有办法让 insertOne 无法创建重复的索引文档而不会引发错误?
- flutter - 因为 fstore 依赖连接性 >=0.4.6+1 这需要 Flutter SDK 版本 >=1.10.0 <2.0.0
- postgresql - 使用 PostgREST 插入/更新 PostGIS 几何列