2016-10-02 109 views
4

我遇到了附加數據幀的問題。 我嘗試執行此代碼熊貓:將數據幀附加到另一個df

df_all = pd.read_csv('data.csv', error_bad_lines=False, chunksize=1000000) 
urls = pd.read_excel('url_june.xlsx') 
substr = urls.url.values.tolist() 
df_res = pd.DataFrame() 
for df in df_all: 
    for i in substr: 
     res = df[df['url'].str.contains(i)] 
     df_res.append(res) 

當我嘗試保存df_res我得到空的數據幀。 df_all看起來像

ID,"url","used_at","active_seconds" 
b20f9412f914ad83b6611d69dbe3b2b4,"mobiguru.ru/phones/apple/comp/32gb/apple_iphone_5s.html",2015-10-01 00:00:25,1 
b20f9412f914ad83b6611d69dbe3b2b4,"mobiguru.ru/phones/apple/comp/32gb/apple_iphone_5s.html",2015-10-01 00:00:31,30 
f85ce4b2f8787d48edc8612b2ccaca83,"4pda.ru/forum/index.php?showtopic=634566&view=getnewpost",2015-10-01 00:01:49,2 
d3b0ef7d85dbb4dbb75e8a5950bad225,"shop.mts.ru/smartfony/mts/smartfon-smart-sprint-4g-sim-lock-white.html?utm_source=admitad&utm_medium=cpa&utm_content=300&utm_campaign=gde_cpa&uid=3",2015-10-01 00:03:19,34 
078d388438ebf1d4142808f58fb66c87,"market.yandex.ru/product/12675734/spec?hid=91491&track=char",2015-10-01 00:03:48,2 
d3b0ef7d85dbb4dbb75e8a5950bad225,"avito.ru/yoshkar-ola/telefony/mts",2015-10-01 00:04:21,4 
d3b0ef7d85dbb4dbb75e8a5950bad225,"shoppingcart.aliexpress.com/order/confirm_order",2015-10-01 00:04:25,1 
d3b0ef7d85dbb4dbb75e8a5950bad225,"shoppingcart.aliexpress.com/order/confirm_order",2015-10-01 00:04:26,9 

urls看起來像

url 
shoppingcart.aliexpress.com/order/confirm_order 
ozon.ru/?context=order_done&number= 
lk.wildberries.ru/basket/orderconfirmed 
lamoda.ru/checkout/onepage/success/quick 
mvideo.ru/confirmation?_requestid= 
eldorado.ru/personal/order.php?step=confirm 

當我在一個循環中它不是空的打印res。但是當我嘗試在追加後的循環df_res中打印時,它返回空數據幀。 我找不到我的錯誤。我該如何解決它?

回答

4

如果你看看其他the documentation for pd.DataFrame.append

追加行到該幀的結束,返回一個新的對象。不在此框中的列將作爲新列添加。

(強調我的)。

嘗試

df_res = df_res.append(res) 

順便說明,大熊貓是不是爲了創建通過連續級聯一個數據幀是有效的。你可以試試這個,而是:

all_res = [] 
for df in df_all: 
    for i in substr: 
     res = df[df['url'].str.contains(i)] 
     all_res.append(res) 

df_res = pd.concat(all_res) 

這首先創建的所有部件的列表,那麼一旦在年底創建從所有這些的數據幀。

+1

謝謝你的解釋。有時'df_res.append(res)'有效,但有時只有'df_res = df_res.append(res)'有效。但我不知道它爲什麼會發生 –

+0

@PetrPetrov你在互動環境中工作嗎? –