读取行之间没有分隔符的文件

我有一个非常明显的问题,但我找不到熊猫解决方案(我找到了这个,很接近)。

我的文本文件没有行分隔符。因此,pandas 将文件读取为具有单行和大量列的数据框。它看起来如下:

header_1, header_2, header_3, 1, jan, 600, 2, feb, 900, 3, jan, 678

我想每行读取三个元素。最终结果应如下所示:

header_1  header_2  header_3 
       1       jan       600
       2       feb       900
       3       jan       678

我怎样才能告诉文件读取每三个逗号作为换行符?


月关宝盒
浏览 143回答 4
4回答

慕娘9325324

假设前几个条目是列名。你可以split文本,找到标题的数量,并对其余数据进行分区以匹配标题的数量:data = """header_1, header_2, header_3, 1, jan, 600, 2, feb, 900, 3, jan, 678"""header = [head.strip() for head in data.split(',') if head.strip().startswith('header')]rest = [head.strip() for head in data.split(',') if not head.strip().startswith('header')]length = len(header)rest = [rest[n:n+length] for n in range(0, len(rest), length)]pd.DataFrame(rest, columns = header) header_1   header_2    header_30   1         jan         6001   2         feb         9002   3         jan         678

长风秋雁

使用**Split function**后跟切片来创建数据框a="header_1, header_2, header_3, 1, jan, 600, 2, feb, 900, 3, jan, 678"a=a.split(",")a1=[]a2=[]a3=[]for i in range(0,len(a)):    if(i%3==2):        a1.append(a[i])    elif(i%3==1):        a2.append(a[i])    else:        a3.append(a[i])    data={a3[0]:a3[1:],a2[0]:a2[1:],a1[0]:a1[1:]}df=pd.DataFrame(data)    输出    header_1       header_2           header_30   1              jan                    6001   2              feb                    9002   3              jan                    678

慕丝7291255

您不需要 pandas 来执行此操作,您可以只使用本机 python。如果文件格式正确,即如您所写header_1, header_2, header_3, 1, jan, etc您可以只使用字符串方法,例如将列表拆分和重组为您想要的二维数组形状。如果您想稍后使用熊猫,您可以从那里创建数据框。

qq_遁去的一_1

也许标准str.split()就足够了:txt = '''header_1, header_2, header_3, 1, jan, 600, 2, feb, 900, 3, jan, 678'''txt = txt.split(',')df = pd.DataFrame([*zip(txt[3::3], txt[4::3], txt[5::3])], columns=[*txt[0:3]])print(df)印刷:  header_1  header_2  header_30        1       jan       6001        2       feb       9002        3       jan       678
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python