Python 将lambda应用于中的列

Python 将lambda应用于中的列,python,pandas,lambda,pandas-apply,Python,Pandas,Lambda,Pandas Apply,我有下面的数据框 ipdb> csv_data country_edited sale_edited date_edited transformation_edited 0 India 403171 21091956 1 1 Bhutan 394096 21091956 2 2 Nepal 36

我有下面的数据框

ipdb> csv_data
  country_edited  sale_edited  date_edited  transformation_edited
0          India       403171     21091956                      1
1         Bhutan       394096     21091956                      2
2          Nepal       361372     21091956                      3
3         madhya       355883     21091956                      4
4          sudan       262949     21091956                      5
下面是我的代码

transfactor_count = 5.6
csv_data["transformation_edited"] = csv_data["transformation_edited"].apply(lambda x: x * transfactor_count)
但是上面的代码给了我一个错误

*** NameError: global name 'transfactor_count' is not defined
如何解决这个问题

实际代码
您可以在数据帧上使用lambda,如下所示:

transfactor_count = 5.6;
csv_data['transformation_edited']=map(lambda x: x * transfactor_count, csv_data['transformation_edited'])

正如错误已经指出的,lambda函数无法找到全局变量。 您可以尝试通过以下方式使其全球化:

global transfactor_count
transfactor_count = 5.6
csv_data["transformation_edited"] = csv_data["transformation_edited"].apply(lambda x: x * transfactor_count)
但正如耶斯雷尔所指出的:

csv_data["transformation_edited"] = csv_data["transformation_edited"] * transfactor_count 
它要优雅得多

在执行以下操作之前,您可能必须将数据类型更改为浮动:

csv_data["transformation_edited"] = csv_data["transformation_edited"].astype(float) * transfactor_count

对我来说,它是有效的,但是为什么不使用
csv_数据[“transformation_edited”]=csv_数据[“transformation_edited”]*transfactor_count
csv_数据[“transformation_edited”]=csv_数据[“transformation_edited”].mul(transfactor_count)
?或者还有其他一些代码可能会导致错误?基本上,我使用的是django,我将从数据库中获取Transactor\u计数。可能使用
csv\u数据[“transformation\u edited”]。mul(外键.转换因子)
?比如
csv\u数据[外键.表列名称]=csv\u数据[外键.表列名称].mul(外键.tranformat)‌​离子系数)
csv_data["transformation_edited"] = csv_data["transformation_edited"].astype(float) * transfactor_count