2013-10-11 45 views
1

我想ping一個函數並從數據框pyrecords傳遞多個字段。 不幸的是,下面的代碼給了我審查字段的正確答案,但也打印了dealid和userid的所有值。傳遞字段的功能。 PYTHON.Pandas

for review in pyrecords['review']: 
     analyze_text(review,u'english',pyrecords['dealid'],pyrecords['userid']) 

以下是數據框的外觀。

>>> pyrecords 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 433 entries, 0 to 432 
Data columns (total 5 columns): 
createddate  433 non-null values 
userid    433 non-null values 
dealid    433 non-null values 
preferredlocale 42 non-null values 
review    433 non-null values 
dtypes: datetime64[ns](1), int64(2), object(2) 
+0

你還沒有真正解釋過這個問題。我們不知道analyze_text函數在做什麼,所以不可能說出是否有問題。你給它一個一個的具體評論,你也給它所有的交易和userids(這似乎有點奇怪)。 –

+0

最後一部分,「你給它一個一個的具體評論,你也給它所有的交易和userids(這似乎有點奇怪)。」是我需要幫助的,我需要傳遞同一行的字段,而不是所有的值。 – RomainD

回答

1
for index, row in pyrecords.iterrows():  
    analyze_text(row['review'], u'english',row['dealid'],row['userid']) 

注意,通過數據幀的行迭代可能是你沒有利用大熊貓充分利用的標誌。爲了獲得更好的性能,您需要重寫analyze_text以在完整的DataFrame或Series上操作,而不是逐行操作。

+0

我得到一個錯誤與此,在評論欄是STR: 「文件‘’,2號線,在 類型錯誤:元組索引必須是整數,而不是STR」 – RomainD

+0

@RomainD:對不起,我的錯。 'iterrows'返回'(index,row)'的元組,而不僅僅是行本身。我編輯了我的帖子來糾正這個問題。 – unutbu

+0

謝謝!它現在有效。 – RomainD

0

你的問題有點不清楚,但你似乎試圖將一個函數應用於DataFrame的每一行。嘗試

analyze_english = lambda review, dealid, userid: \ 
    analyze_text(review, u'english', dealid, userid) 

pyrecords[['review', 'dealid', 'userid']].apply(analyze_english, axis=1)