簡體   English   中英

將函數應用於pandas數據框的列

[英]Apply a function to column of pandas dataframe

我有一個包含用戶對電影的評論的數據框,並且想解析用戶將電影描述為“ movie1”和“ movie2”時的示例

User id     Old id_New id   Score   Comments
947952018   3101_771355141  3.0 If you want to see a comedy and have a stupid ...
805407067   11903_18330     5.0 Argento?s fever dream masterpiece. Fairy tale ...
901306244   16077_771225176 4.5 Evil Dead II meets Brothers Grimm and Hawkeye ...
901306244   NaN_381422014   1.0 Biggest disappointment! There's a host of ...
15169683    NaN_22471       3.0 You know in the original story of Pinocchio he...

我編寫了一個函數,該函數帶有注釋,找到單詞“ meets”,在遇到之前和之后的前n個單詞,然后返回(希望如此)movie1和movie2標題的本質,我計划稍后對其進行模糊匹配到另一個數據框中的標題。

def parse_movie(comment, num_words):
    words = comment.partition('meets')
    words_before = words[0].split(maxsplit=num_words)[-num_words:] 
    words_after = words[2].split(maxsplit=num_words)[:num_words]
    movie1 = ' '.join(words_before)
    movie2 = ' '.join(words_after)
    return movie1, movie2

如何在原始熊貓數據框的注釋列上應用此功能,並將返回的movie1和movie2標題放在單獨的列中? 我試過了

df['Comments'].apply(parse_titles) 

但后來我無法指定要使用的num_words個。 直接在列上操作對我也不起作用,而且我不確定如何將新電影放到新列中。

parse_movie(sample['Comments'], 4)
AttributeError: 'Series' object has no attribute 'partition'

建議將不勝感激!

基於如何在熊貓數據框中拆分元組列? 回答。 這可以使用lambda函數和apply(pd.Series)完成。 將結果保存到數據框列“ movie1”和“ movie2”中。

num_words = 4
df[['movie1','movie2']] = df['comments'].apply(lambda comment: parse_movie(comment, num_words)).apply(pd.Series)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM