传递字段功能。 PYTHON.Pandas

时间:2013-10-11 14:24:49

标签: python for-loop pandas try-catch

我正在尝试ping函数并从数据帧pyrecords传递多个字段。 不幸的是,下面的代码为我提供了审核字段的正确答案,同时也打印了dealid和userid的所有值。

  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)

2 个答案:

答案 0 :(得分:1)

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

请注意,迭代DataFrame的行可能表明您没有充分利用Pandas。为了获得更好的性能,您需要重写analyze_text以对完整的DataFrame或Series进行操作,而不是逐行。

答案 1 :(得分:0)

您的问题有点不清楚,但您似乎正在尝试将函数应用于DataFrame的每一行。尝试

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

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