簡體   English   中英

使用用戶定義函數中的值創建一個新的pandas列

[英]Create a new pandas column with a value from a user-defined function

嘗試使用我創建的為該新列返回值的函數在熊貓數據框上創建新列時,出現了SettingWithCopyWarning。 我正在使用movielens數據集並預測電影上的用戶評級。

這是我的數據框的一個示例:

在此處輸入圖片說明

現在,如果我想添加一個名為“ prediction”的新列,該列將user_id和item_id發送到我的函數並返回預測,則我已經遵循了另一個問題的建議

因此,使用代碼:

df['pred'] = df.apply(lambda x: predict_rating(x['user_id'], x['item_id']), axis =1)

但是我一直在獲取SettingWithCopyWarning。

:44:SettingWithCopyWarning:試圖在DataFrame的切片副本上設置一個值。 嘗試改用.loc [row_indexer,col_indexer] = value參見文檔中的警告: http : //pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

任何的建議都受歡迎。

做這個 ,

df.loc [:,'pred'] = df.apply(lambda x:預言等級(x ['user_id'],x ['item_id']),軸= 1)

這個最小的例子對我有用:

import pandas as pd

df = pd.DataFrame({'user_id':[22,224], 'item_id': [377,29], 'rating': [1,3]})
def prediction_func(row):
    return row['user_id'] + row['item_id']

df['prediction'] = df.apply(prediction_func, axis=1)
print(df.head())

輸出:

   item_id  rating  user_id  prediction
0      377       1       22         399
1       29       3      224         253

我認為這與我的功能有關,因此將深入研究並報告任何有趣的內容。

暫無
暫無

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

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