【问题标题】:New entry in dataframe is deleting the previous entry in pandas数据框中的新条目正在删除熊猫中的前一个条目
【发布时间】:2022-01-23 02:42:05
【问题描述】:

在这段代码中,我试图为一整天的每一分钟生成水位数据,然后将该数据存储到熊猫数据框中,但是当我尝试这样做时,数据框中的新数据会删除前一个最后在数据框中只剩下一个值了。

filling = 10/6
emptyrate = 5/6
current_level = 60
start_date = '11/01/01'
end_date = '11/02/01'
start = datetime.strptime(start_date, "%y/%d/%m")
end = datetime.strptime(end_date, "%y/%d/%m")

#generating random values for determining the state of the motor
now = start
workdate = now.date()
nowtime = now.time()

endt = end
ktime = end  

#generating random level of water in the tank 
print(current_level)

def fill():
    global now
    global workdate
    global nowtime
    global ktime
    global current_level
    global flag
   
    while x == 'on' and current_level <= 450:
        Data = {'time':now,'status':x,'level':current_level}
        df = pd.DataFrame(Data, index = [0])
       
        print(current_level)  
        current_level += filling
        current_level = round(current_level,2)
        now = now + timedelta(minutes = 1)
        nowtime = now.time()
        workdate = now.date

        if now == ktime:
            Data = {'time':now,'status':'on','level':current_level}
            df = pd.DataFrame(Data,index = [0])
            print("true")
            flag = 'red'
            break

【问题讨论】:

  • 当您执行df=pd.DataFrame(Data,index=[0]) 时,您每次都在重新创建df。试试df.loc[len(df)] = data

标签: python python-3.x pandas data-analysis


【解决方案1】:

您确实在 while 循环内使用每个 df = ... 赋值覆盖了数据帧。除了@Aryerez 建议的解决方案,对于避免过度调用pd.DataFrame 的可扩展方法,您可以收集列表中的数据,最后只创建一次数据框。

具体来说,替换这部分:

    while x == 'on' and current_level <= 450:
        Data = {'time':now,'status':x,'level':current_level}
        df = pd.DataFrame(Data, index = [0])

用这个:

    times = []
    states = []
    levels = []

    while x == 'on' and current_level <= 450:
        times.append(now)
        states.append(x)
        levels.append(current_level)

然后,在函数的最后,在while 循环之后,添加:

    data = {'time': times, 'status': states, 'level': levels}
    df = pd.DataFrame(data)

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 2019-05-14
    • 2023-02-20
    • 2019-02-26
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多