【发布时间】:2019-07-12 08:03:25
【问题描述】:
我正在写作是因为我遇到了一个 for 循环的问题,该循环在数据帧为空时填充数据帧。不幸的是,Filling empty python dataframe using loops、Appending to an empty data frame in Pandas?、Creating an empty Pandas DataFrame, then filling it? 的帖子并没有帮助我解决它。
我的尝试首先是在列表“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。
提前致谢。
德里戈
【问题讨论】:
-
什么是list_test_2?此外,这是很多数据帧。有没有机会将所有 16 个数据框组合成一个大数据框?也许您可以通过添加一个值为 'a'、'b'、'c' 或 'd' 的列,然后添加一个值为 'ap'、'di'、' 的列来做到这一点er_direct' 或 'er_s'。
-
感谢您的回答。我已经更新了我的尝试。我忘记了 list_test_2 的定义。实际上,它们有很多数据框,但每个数据框只有几行。
标签: python pandas dataframe iteration