【问题标题】:Appending data to a pandas dataframe [duplicate]将数据附加到熊猫数据框[重复]
【发布时间】:2021-09-24 03:44:30
【问题描述】:

我正在尝试将具有相同列数的多个数据文件放入一组连续的数据中。 x 值是时间,每个后续数据文件都从前一个数据文件完成的时间开始。所以理论上如果我做一些这样的代码:

    data = pd.read_csv(r"/PATH/out.txt", sep="\t")
    data2 = pd.read_csv(r"/PATH/out2.txt", sep="\t")
    data3 = pd.read_csv(r"/PATH/out3.txt", sep="\t")
    data4 = pd.read_csv(r"/PATH/out4.txt", sep="\t")
    data5 = pd.read_csv(r"/PATH/out5.txt", sep="\t")
    data6 = pd.read_csv(r"/PATH/out6.txt", sep="\t")
    data7 = pd.read_csv(r"/PATH/out7.txt", sep="\t")
    data8 = pd.read_csv(r"/PATH/out8.txt", sep="\t")

    print(data)

    data.append(data2, ignore_index=True)
    data.append(data3, ignore_index=True)
    data.append(data4, ignore_index=True)
    data.append(data5, ignore_index=True)
    data.append(data6, ignore_index=True)
    data.append(data7, ignore_index=True)
    data.append(data8, ignore_index=True)

    print(data)

    arr = data.to_numpy()

之前和之后的打印语句应该不一样吧?但是当我尝试时,它似乎没有将其他数据文件附加到第一个。我一定遗漏了一些明显的东西,有人可以帮忙吗?

数据文件是 2 列格式,看起来像这样(最左边的列是 pandas 索引):

            Time(s)  CMASS(1,1,53)
    0     97.000229       0.999999
    1     98.000183       0.999999
    2     98.001122       0.999999
    3     98.200874       0.999999
    4     98.400703       0.999999
    ..          ...            ...
    209  119.700410       0.999999
    210  119.800410       0.999999
    211  119.900410       0.999999
    212  120.000400       0.999999
    213  120.000400       0.999999

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    DataFrame.append 返回一个新对象,它不会修改调用它的数据框。你必须这样做:

    data = data.append(data2)
    

    或者你可以这样做:

    data = pd.concat(pd.read_csv(path) for path in list_of_paths_to_csv)
    

    【讨论】:

      【解决方案2】:

      pandas.DataFrame.append 方法不起作用,而是返回一个新的 DataFrame。因此,您需要将返回值保存到您的变量中:

      data = data.append(data2, ignore_index=True)
      

      但是,在您的情况下,使用 pandas.concat 方法会更有效:

      import glob
      data = pd.concat([pd.read_csv(f, sep="\t") for f in glob.glob('/PATH/out*.txt')])
      

      【讨论】:

      • 谢谢你不知道为什么我没想到哈哈!
      猜你喜欢
      • 2019-01-14
      • 2018-02-08
      • 2017-06-13
      • 2014-01-03
      • 1970-01-01
      • 2022-11-25
      • 2019-10-22
      • 2018-10-14
      • 2021-04-27
      相关资源
      最近更新 更多