繁体   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