2016-10-02 7 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을 저장하려고하면 나는 빈 dataframe를 얻을. 나는 그것이 비어 있지 않는 루프에서 res를 인쇄 할 때

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 

모양처럼 df_all 보인다. 하지만 추가 후 루프 df_res에서 인쇄를 시도하면 빈 데이터 프레임이 반환됩니다. 오류가 발견되지 않습니다. 어떻게 해결할 수 있습니까?

답변

4

는이 프레임의 끝에 다른 the documentation for pd.DataFrame.append

추가] 행을 보면, 는 새로운 객체를 반환. 이 프레임에없는 열은 새 열로 추가됩니다.

(강조 광산).

는 팬더가 연속 회씩 연결하여 DataFrame를 만드는 것을 효율적이지 않습니다주의, 덧붙여

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) 

첫 번째는 한 번 말에 그들 모두에서 DataFrame을 만들고, 모든 부품의 목록을 만듭니다.

+1

설명해 주셔서 감사합니다. 때로는'df_res.append (res)'가 작동하지만'df_res = df_res.append (res)'만 작동하는 경우가 있습니다. 하지만 왜 그런 일이 일어날 지 모르겠다. –

+0

@PetrPetrov 대화 형 환경에서 일하고 있습니까? –

관련 문제