首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python将csv文件转换为dataframes

Python将csv文件转换为dataframes
EN

Stack Overflow用户
提问于 2018-11-09 14:41:21
回答 2查看 3.1K关注 0票数 0

我有一个很大的csv文件,其中包含如下数据:

代码语言:javascript
复制
2018-09, 100, A, 2018-10, 50, M, 2018-11, 69, H,....

诸若此类。(没有单独行的连续流)

我想把它转换成dataframe,这样看起来就像

代码语言:javascript
复制
Col1     Col2  Col3
2018-09  100   A
2018-10  50    M
2018-11  69    H

这是实际数据的简化版本。请建议什么是最好的方法来接近它。

编辑:澄清一下,我的csv文件没有针对每一行的单独行。所有的数据都在一排。

EN

回答 2

Stack Overflow用户

发布于 2018-11-09 17:20:03

一种解决方案是通过csv模块和this algorithm将单个行分割成块,然后提供给pd.DataFrame构造函数。注意,您的数据格式将是dtype object,因此之后您必须显式地转换数字系列类型。

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2018-11-09 17:29:48

代码语言:javascript
复制
data = pd.read_csv('tmp.txt', sep=',\s *', header=None).values
pd.DataFrame(data.reshape(-1, 3), columns=['Col1', 'Col2', 'Col3'])

返回

代码语言:javascript
复制
      Col1 Col2 Col3
0  2018-09  100    A
1  2018-10   50    M
2  2018-11   69    H
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53227868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档