Python 如何从具有单列的文本文件创建数据帧

Python 如何从具有单列的文本文件创建数据帧,python,pandas,Python,Pandas,这个问题可能也是别人问的,但由于我无法找到问题的答案,所以我在这里写信,希望有人能帮助我 问题: 我有一个文本文件,所有的列数据都在一个下面,如何分割这些数据并创建一个表 示例-学生数据。 斯尔诺 一, 二, 三, 四, 学名 A B C D 等级 首先 第二 第三 第四 主题 英式 数学 科学 物理学 获得的分数 五十 六十五 五十五 七十 百分比 10% 20% 30% 40% 上面是单列(就像下面的一列)和文本文件中的示例数据 如何从文本文件创建数据框并拆分列 我的代码如下,但我没有得到任

这个问题可能也是别人问的,但由于我无法找到问题的答案,所以我在这里写信,希望有人能帮助我

问题: 我有一个文本文件,所有的列数据都在一个下面,如何分割这些数据并创建一个表

示例-学生数据。 斯尔诺

一,

二,

三,

四,

学名

A

B

C

D

等级

首先

第二

第三

第四

主题

英式

数学

科学

物理学

获得的分数

五十

六十五

五十五

七十

百分比

10%

20%

30%

40%

上面是单列(就像下面的一列)和文本文件中的示例数据

如何从文本文件创建数据框并拆分列 我的代码如下,但我没有得到任何东西

import pandas as pd

def parse_my_file(filename):
  With open ('sample.txt')as f:
      for line in f:
         yield line.strip(). split (' ',1)


 df=pd.DataFrame(parse_my_file('sample.txt'))
谢谢

试试这个:

import numpy as np
import pandas as pd

x = np.loadtxt('test1.txt',delimiter = '\n\n', dtype=str)
reshaped = x.reshape(-1,5).T
df = pd.DataFrame(data = reshaped[1:,:], columns = reshaped[0])

print(df)

输出:

  SlNo Student Name   Grade      Subject Marks Obtained Percentage
0    1            A   First      English             50        10%
1    2            B  Second  Mathematics             65        20%
2    3            C   Third      Science             55        30%
3    4            D  Fourth      Physics             70        40%

尝试下面的代码,希望这会有所帮助

import pandas as pd

def parse_my_file(filename):
  all_ele = []
  with open ('data.txt')as f:
      for line in f:
          # print(line.strip().split(' ',1))
          if line.strip().split(' ',1)[0] != '':
            all_ele.append(line.strip().split(' ',1)[0])
  return all_ele



all_ele = parse_my_file('data.txt')

new_data = { (all_ele[i-5] if i!= 0 else all_ele[0]):(all_ele[i-4:i] if i != 0 else all_ele[1:i+5]) for i in range(0,len(all_ele)+5,5) }
print(new_data)

df=pd.DataFrame(new_data)
print(df)
将数据保存到csv文件中

df.to_csv(<path>,index=False)

谢谢你的快速回复!但我得到了错误。。。重塑=x。重塑(-1,5)。T。。。。。。无法将大小为188的数组重塑为共享(5),这意味着您的文件具有不同的模式。顶部或底部有额外的行,或者每列有不同的值。我尝试了你的第二个程序,它正在工作,但我得到[4行x 36列]。。。我有很多行,但有6列标题。。。任何帮助都很重要。。。。如何将其保存到CSV您能提供文件和代码的链接吗?感谢您的帮助,很抱歉,由于数据安全原因,我无法上传。。。。。。这是一个文本文件,所有数据都在彼此下方,没有间隙,如上例所示,但有更多行,如1-40行。谢谢帮助!我得到了输出,但我有更多的行..如何得到所有我只得到4行x 36列。。。如何使只有6列和行的记录数。。。如何保存该文件df.to_csv(,index=False),如果您获得更多行,则会在您的文件中发布数据。很抱歉造成混淆,我的意思是,我的文本文件中有36行,但在您的程序中,我只得到4行。我们是否有办法根据列名称自动创建列。。。。例如:-从上面看,如果SlNo已完成并检测到学生姓名,则应创建一个新列,直到检测到下一列文本
df.to_csv(<path>,index=False)
{'SlNo': ['1', '2', '3', '4'], 'Student': ['A', 'B', 'C', 'D'], 'Grade': ['First', 'Second', 'Third', 'Fourth'], 'Subject': ['English', 'Mathematics', 'Science', 'Physics'], 'Marks': ['50', '65', '55', '70']}


  SlNo Student   Grade      Subject Marks Percentage
0    1       A   First      English    50        10%
1    2       B  Second  Mathematics    65        20%
2    3       C   Third      Science    55        30%
3    4       D  Fourth      Physics    70        40%