如何根据调用函数的次数在数据帧中连续附加数据

时间:2017-11-13 10:25:45

标签: python pandas

UseCase:

我有一个xml文件,我根据它们的属性解析一些值并以字典格式存储它们。

函数add_data_to_data_frame每次调用时都会覆盖数据帧。

我希望在调用函数时不要覆盖数据。

import pandas as pd
import datetime

date=datetime.datetime.now().date()
date=pd.to_datetime(date)

def add_data_to_dataframe():
    data={
        'fail':5,
        'Pass':5,
        'suite_name':['Robot'],
        'Report_datetime':[pd.to_datetime('today').now()],
        'datetime':[pd.to_datetime('today').now()]
        }
    rd=pd.DataFrame(columns=['suite_name','fail','Pass','Report_datetime','datetime'],index=[date])
    rd=pd.DataFrame(data,index=[date])
    rd=rd.append(pd.DataFrame(data,index=[date]))
    return rd

dq=add_data_to_dataframe()
print (dq)

每次调用该函数时,我都有2个输出

    Pass         Report_datetime                datetime  fail  \
2017-11-13     5 2017-11-13 15:51:51.648 2017-11-13 15:51:51.648     5   
2017-11-13     5 2017-11-13 15:51:51.648 2017-11-13 15:51:51.648     5   

           suite_name  
2017-11-13      Robot  
2017-11-13      Robot  

我想要的是,如果我下次调用我的函数时,其中应该有3条记录,依此类推

1 个答案:

答案 0 :(得分:0)

它被覆盖的原因是你使用相同的变量名并在函数内执行追加操作,这会在你第二次调用它时清空所有内容。

import pandas as pd
import datetime

rd=pd.DataFrame() # an empty dataframe
date=datetime.datetime.now().date()
date=pd.to_datetime(date)

def add_data_to_dataframe():
    data={
        'fail':5,
        'Pass':5,
        'suite_name':['Robot'],
        'Report_datetime':[pd.to_datetime('today').now()],
        'datetime':[pd.to_datetime('today').now()]
        }
       empty_list.append(data)
       return empty_list

获得空列表后,我将定义我的数据帧

make_list = add_data_to_dataframe()
new_df = pd.DataFrame(make_list,columns=['suite_name','fail','Pass','Report_datetime','datetime'],index=[date])

现在最后附加两个数据帧。

rd.append(new_df) # now instead of overwriting it will append