Python 使用pandas从txt文件中分离数据

Python 使用pandas从txt文件中分离数据,python,pandas,file,Python,Pandas,File,我有一个txt文件中的数据,需要分离数据。抱歉,但我真的觉得这很难(也许也很难解释)。下面是txt文件的前几行(有1000行)。我需要第0行第一个*和第700行最后一个*之间的所有数据。我不想按行号选择,因为行号可以更改,但我想要一个代码,用于选择*之间的数据。其次,数据不分为列,而是一大行。我想要第二段代码,它可以将数据分隔为列,即后一个报告、计算日期、索引代码都是列(我不能在空格上分隔,因为它可以将计算和日期分隔为单独的列,而它们应该是一列)。请有人帮我,谢谢

我有一个txt文件中的数据,需要分离数据。抱歉,但我真的觉得这很难(也许也很难解释)。下面是txt文件的前几行(有1000行)。我需要第0行第一个*和第700行最后一个*之间的所有数据。我不想按行号选择,因为行号可以更改,但我想要一个代码,用于选择*之间的数据。其次,数据不分为列,而是一大行。我想要第二段代码,它可以将数据分隔为列,即后一个报告、计算日期、索引代码都是列(我不能在空格上分隔,因为它可以将计算和日期分隔为单独的列,而它们应该是一列)。请有人帮我,谢谢

                                                     0
0                                                    *
1    #124 Latter REPORT                      D51D   ...
2    #  1 Calculation Date                  calc_da...
3    #  2 Index Code                        modes2_in...
4    #  3 Index Name                        index_n...
120  #120 5 Years ADPS Growth Rate          5_years...
121  #121 1 Year ADPS Growth Rate           1_year_...
122  #122 Payout Ratio                      payout_...
123  #123 Reserved 26                       reserve...
124  #124 Reserved 27                       reserve...
125                                                  *

假设数据帧被称为
dat
,对于第一个查找星号的部分:

asterisk_location = dat[0] == '*'

asterisk_location = asterisk_location[asterisk_location]

start, finish = asterisk_location.index

dat = dat.iloc[start+1:finish]

这还假设您希望获得前两个星号之间的区域。如果还有更多,您将不得不进行一些调整。

我知道您的文件很大,但请与我们共享一个最小的、可复制的文件。例如,将第二个*放在第3行,而不是第700行,然后将下一个*放在第6行或第7行,以此类推。这样我们可以测试我们的答案,并为您提供经过验证的解决方案。只需编辑数据-这有帮助吗?第一部分的快速答案:只需使用行切片。dat[1:700]应该得到从索引1到699(星号之间的东西)的所有内容@Sam我不想使用行的位置,因为数据每天都会变化,例如*今天可能是700行,但明天可能是718行etc@Zack好的,明白了。见下面我的答案。