【问题标题】:How to append data to a dataframe whithout overwriting?如何在不覆盖的情况下将数据附加到数据帧?
【发布时间】:2019-01-26 22:54:01
【问题描述】:

我是 python 新手,但我需要它用于个人项目。所以我有这个代码块。功能是创建一个表并根据需要对其进行更新。问题是表格不断被覆盖,我不知道为什么。我也在努力正确分配要追加的新行的起始位置,这就是为什么total(最终也被覆盖)和pos在那里,但我还没有弄清楚如何正确使用它们.有什么建议吗?

import datetime
import pandas as pd
import numpy as np

total ={}

entryTable = pd.read_csv("Entry_Table.csv")

newEntries = int(input("How many new entries?\n"))

for i in range(newEntries):
   ID = input ("ID?\n")
   VQ = int (input ("VQ?\n"))
   timeStamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
   entryTable.loc[i] = [timeStamp, ID, VQ]
   entryTable.to_csv("Inventory_Table.csv")
   total[i] = 1

pos = sum(total.values())
print(pos)
inventoryTable = pd.read_csv("Inventory_Table.csv", index_col = 0)

【问题讨论】:

  • Stackoverflow 上有很多类似的问题都有很好的答案。一种方法是使用df.to_csv('my_csv.csv', mode='a', header=False)

标签: python python-3.x jupyter-notebook


【解决方案1】:

您的变量“i”从索引 0 运行到“newEntries”的数量。当您将新数据添加到 Pandas 数据框中的“i”行时,您将覆盖该行中的现有数据。如果要添加新数据,请尝试“n+i”,其中 n 是初始条目数。您可以使用任一方法确定 n

n = len(entryTable)

n = entryTable.shape[0]

【讨论】:

  • 我正在尝试这样的事情: for i in range(newEntries): if len(entryTable) == 0: n = 0 else: n = len(entryTable) ID = input ("ID ?\n") VQ = int (输入 ("VQ?\n")) timeStamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") entryTable.loc[n + i] = [timeStamp, ID, VQ] entryTable.to_csv("Entry_Table.csv") total[i] = 1 其他都一样,我得到这个错误: ValueError: cannot set a row with entryTable.loc[n + i] = [timeStamp, ID, VQ] 中的列不匹配
猜你喜欢
  • 2020-08-30
  • 2022-12-15
  • 2021-04-18
  • 1970-01-01
  • 2022-12-06
  • 2018-04-06
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多