1

我正在尝试 ping 一个函数并从数据帧 pyrecords 传递多个字段。不幸的是,下面的代码为我提供了 review 字段的正确答案,但也打印了 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)
4

2 回答 2

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

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

于 2013-10-11T14:37:40.733 回答
0

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

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

 pyrecords[['review', 'dealid', 'userid']].apply(analyze_english, axis=1)
于 2013-10-11T14:35:10.347 回答