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