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条记录,依此类推
答案 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