【问题标题】:selecting one specific column out of a text file从文本文件中选择一个特定的列
【发布时间】:2023-02-20 20:23:04
【问题描述】:

我只想选择以下文本文件的第二列:500、1000、1500、...、4500、5000、5500、...、21000

我在下面附上了我的文本文件的图片。

我已经使用下面的脚本来做到这一点,但我的结果中没有数字 500:

with open("example", "r") as f:
    reader = csv.reader(f, delimiter =" ")
    second_column = list(zip(*reader))[3]

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python csv matplotlib


    【解决方案1】:

    您可以使用 pandas 库中的 read_csv 函数。例如:

    import pandas as pd
    
    data = pd.read_csv("data.csv", delimiter=",")
    

    选择右边的delimiter。你会得到一个pandasDataFrame。然后您可以使用例如列标题来选择您感兴趣的列:

    my_column = data["my_column"]
    

    如果您更喜欢使用 numpy,可以使用 to_numpy() 方法将 my_column 系列转换为 numpy 数组。

    【讨论】:

      【解决方案2】:

      第二列 - 索引=1。在您的代码中,索引为 3。必须为 1。

      with open("example", "r") as f:
          reader = csv.reader(f, delimiter =" ")
          second_column = list(zip(*reader))[1]
      

      【讨论】:

        【解决方案3】:

        您显示的示例不是 csv 文件。从以空格分隔的数据的角度来看,第一个单元格位于第 4 个位置,而不是第 3 个。

        作为解决方法,我们可以尝试pandas.read_csv(your_data, sep='s+', engine='python')。但首先我会尝试一些更基本的东西——读取、过滤、拆分和获取索引 1 处的数据:

        with open("example", "r") as f:
            data = [int(line.split()[1]) for line in f if not line.startswith('#')]
        

        请注意,str.split 将默认使用空格作为分隔符,并从结果中删除任何空字符串,这类似于 pandas csv-reader 中的sep='s+'。 在更一般的情况下,一些 line.strip(). ... 可能也是合适的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多