【问题标题】:separating data from a txt file using pandas使用 pandas 从 txt 文件中分离数据
【发布时间】:2019-07-09 15:58:41
【问题描述】:

我在 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                                                  *

【问题讨论】:

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

标签: python pandas file


【解决方案1】:

假设数据帧被称为dat,第一部分要找到星号:

asterisk_location = dat[0] == '*'

asterisk_location = asterisk_location[asterisk_location]

start, finish = asterisk_location.index

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

这还假设您想要获取前两个星号之间的区域。如果还有更多,您将不得不稍微调整一下。

【讨论】:

    猜你喜欢
    • 2022-10-13
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2014-02-28
    • 2019-09-27
    • 2018-04-19
    • 2023-02-10
    相关资源
    最近更新 更多