Я пишу, потому что у меня проблема с циклом for, который заполняет фрейм данных, когда он пуст.К сожалению, сообщения Заполнение пустого фрейма данных Python с использованием циклов , Присоединение к пустому фрейму данных в Pandas? , Создание пустого фрейма данных Pandas с последующим заполнением? не поможет мне решить это.
Моя попытка направлена на то, чтобы сначала найти пустые кадры данных в списке «listDataframe», а затем заполнить их выбранными столбцами.Я считаю, что мой код яснее, чем мое объяснение.Что я не могу сделать, это сохранить новый фрейм данных, используя его оригинальное имя.Вот моя попытка:
for k,j in zip(listOwner,listDataframe):
for y in j:
if y.empty:
data = pd.DataFrame({"Event Date": list_test_2, "Site Group Name" : k, "Impressions" : 0})
y = pd.concat([data,y])
#y = y.append(data)
, где "listOwner", "listDataframe" и "list_test_2", соответственно, определяются как:
listOwner = ['OWNER ONE', 'OWNER TWO', 'OWNER THREE', 'OWNER FOUR']
listDataframe = [df_a,df_b,df_c,df_d]
с
df_a = [df_ap_1, df_di_1, df_er_diret_1, df_er_s_1]
df_b = [df_ap_2, df_di_2, df_er_diret_2, df_er_s_2]
df_c = [df_ap_3, df_di_3, df_er_diret_3, df_er_s_3]
df_d = [df_ap_4, df_di_4, df_er_diret_4, df_er_s_4]
и
list_test_2 = []
for i in range(1,8):
f = (datetime.today() - timedelta(days=i)).date()
list_test_2.append(datetime.combine(f, datetime.min.time()))
Пустым фреймом данных были df_ap_1 и df_ap_3.После запуска вышеуказанных строк (используя concat и append), если я вызываю эти два кадра данных, они все еще пусты.Любая идея, почему это происходит и как преодолеть эту проблему?
ОБНОВЛЕНИЕ
Чтобы избежать как добавления, так и конкат, я попытался использовать предстоящую попытку (опять-таки безуспешно).
for k,j in zip(listOwner,listDataframe):
for y in j:
if y.empty:
y = pd.DataFrame({"Event Date": list_test_2, "Site Group Name" : k, "Impressions" : 0})
Два желаемых результата должны быть:
, где первый кадр данных должен называться df_ap_1
, а второйодин df_ap_3
.
Заранее спасибо.
Дриго