首页 > 解决方案 > 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 文件的每一行没有单独的行。所有数据都在一行上。

标签: pythonpandascsvdataframe

解决方案


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

推荐阅读