我目前正在使用此慢速代码来更新数据帧(从CSV读取并回写),方法是填充现有索引的列,或者如果找不到则完全添加新行。
dropna
是一个数组,其中包含数据帧中可能已经存在的索引ID。
cs
是要更新的数据框。
meta_df
检查行中的值是否与给定的new_fill()
相同
c
如何实现相同的输出但更有效?使用for c in cs:
row = None
if c in meta_df.index:
mrow = meta_df.loc[c]
if not mrow.isnull().values.any():
continue
row = get_ideal_row(c)
if not new_fill(mrow, row): # is current row as expected?
continue
else:
row = get_ideal_row(c)
meta_df = db.add2DF(meta_df, row) #re-creates dataframe with new row
def new_fill(mrow, row):
mrow_dict = mrow.to_dict()
for key, val in mrow_dict.items():
if pandas.isnull(val):
new_val = row[key]
if new_val:
return True
return False
摆脱循环和重新创建数据帧?