[英]Appending to an empty data frame in Pandas using a for loop
我寫這篇文章是因為我有一個for循環的問題,該循環會在數據框為空時填充該數據框。 不幸的是,這些帖子使用循環填充了空的python 數據框,並在Pandas中附加到了一個空的數據框? , 創建一個空的Pandas DataFrame,然后填充它? 沒幫我解決。
我的嘗試首先是要在列表“ 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)之后,如果我調用這兩個數據幀,它們仍然為空。 任何想法為什么會發生以及如何克服這個問題?
UPDATE
為了避免append和concat,我嘗試使用即將來臨的嘗試(同樣沒有成功)。
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
。
提前致謝。
Drigo
這是一種方法:
import pandas as pd
columns = ['Event Date', 'Site Group Name', 'Impressions']
df_ap_1 = pd.DataFrame(columns=columns) #empty dataframe
df_di_1 = pd.DataFrame(columns=columns) #empty dataframe
df_ap_2 = pd.DataFrame({'Event Date':[1], 'Site Group Name':[2], 'Impressions': [3]}) #non-empty dataframe
df_di_2 = pd.DataFrame(columns=columns) #empty dataframe
df_a = [df_ap_1, df_di_1]
df_b = [df_ap_2, df_di_2]
listDataframe = [df_a,df_b]
list_test_2 = 'foo'
listOwner = ['OWNER ONE', 'OWNER TWO']
def appendOwner(df, owner, list_test_2):
#appends a row to a dataframe for each row in listOwner
new_row = {'Event Date': list_test_2,
'Site Group Name': owner,
'Impressions': 0,
}
df.loc[len(df)] = new_row
for owner, dfList in zip(listOwner, listDataframe):
for df in dfList:
if df.empty:
appendOwner(df, owner, list_test_2)
print(listDataframe)
您可以使用appendOwner
函數將appendOwner
的行追加到一個空的數據框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.