Python将csv文件转换为数据帧
我有一个包含以下数据的大型csv文件:Python将csv文件转换为数据帧,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我有一个包含以下数据的大型csv文件: 2018-09, 100, A, 2018-10, 50, M, 2018-11, 69, H,.... 等等。(无单独行的连续流) 我想把它转换成dataframe,看起来像 Col1 Col2 Col3 2018-09 100 A 2018-10 50 M 2018-11 69 H 这是实际数据的简化版本。请告知最好的方法是什么 编辑:为了澄清,我的csv文件没有为每一行单独设置行。所有数据都在一行上。一种解决方案是
2018-09, 100, A, 2018-10, 50, M, 2018-11, 69, H,....
等等。(无单独行的连续流)
我想把它转换成dataframe,看起来像
Col1 Col2 Col3
2018-09 100 A
2018-10 50 M
2018-11 69 H
这是实际数据的简化版本。请告知最好的方法是什么
编辑:为了澄清,我的csv文件没有为每一行单独设置行。所有数据都在一行上。一种解决方案是通过
csv
模块将单行分割成块,然后馈送到pd.DataFrame
构造函数。注意,您的数据帧将是dtypeobject
,因此您必须在之后显式转换数字系列类型
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
一种解决方案是通过
csv
模块将单行分割成块,然后馈送到pd.DataFrame
构造函数。注意,您的数据帧将是dtypeobject
,因此您必须在之后显式转换数字系列类型
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
返回
Col1 Col2 Col3
0 2018-09 100 A
1 2018-10 50 M
2 2018-11 69 H
返回
Col1 Col2 Col3
0 2018-09 100 A
1 2018-10 50 M
2 2018-11 69 H
pandas.read_csv
df=pd.read_csv('pandas_dataframe_importing_csv/example.csv',Name=['UID',First Name',Last Name',Age',Pre-Test Score',Post-Test Score'])
csv文件中的新行格式似乎不清楚。是这样吗?是的。我的csv文件每行没有单独的行。pandas.read\u csv
df=pd.read\u csv('pandas\u dataframe\u importing\u csv/example.csv',names=['UID','First Name','Last Name',Age','Pre Test Score',Post Test Score'])
在csv文件中似乎新行格式不清楚。是这样吗?是的。我的csv文件每行没有单独的行。你能解释一下吗?重塑
与-1
有什么关系?sep=',\s*'
做什么?是否保留数字类型?事实上,我比我更喜欢这个解决方案,所以+1。你能解释一下吗?重塑
与-1
有什么关系?sep=',\s*'
做什么?是否保留数字类型?实际上,我更喜欢这个解决方案,而不是我的so+1。