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

2024-04-23 21:08:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常明显的问题,但我找不到解决方案(I found this,很接近)

我的文本文件没有行分隔符。因此,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

如何告诉文件每隔三个逗号读取一行,作为换行符


Tags: 文件数据元素pandas情况解决方案thisjan
3条回答

也许标准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_3
0        1       jan       600
1        2       feb       900
2        3       jan       678

你不需要熊猫来做这件事,你可以使用原生python。如果文件的格式很好,如您所写

header_1, header_2, header_3, 1, jan, etc

您只需使用字符串方法,例如拆分并将列表重新组织为所需的二维数组形状。如果以后想使用熊猫,可以从那里创建数据帧

使用**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_3
0   1              jan                    600
1   2              feb                    900
2   3              jan                    678

相关问题 更多 >