gpt4 book ai didi

python - 在 Pandas 的列上应用 lambda

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:14 25 4
gpt4 key购买 nike

我有下面的数据框

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

如何解决?

实际代码

for foreign_key in data_mapping_record.csvdatabasecolumnmapping_set.all():
data_type = foreign_key.data_type
trans_factor = foreign_key.tranformation_factor
if data_type == "Decimal":
import ipdb; ipdb.set_trace()
csv_data[foreign_key.table_column_name] = csv_data[foreign_key.table_column_name].apply(lambda x: x * trans_factor )
elif data_type in ["Date", "Datetime"]:
csv_data[foreign_key.table_column_name] = csv_data[foreign_key.table_column_name].apply( lambda d: datetime.strptime(d, dates[date]) )

最佳答案

如错误所述,lambda 函数找不到global 变量。您可以尝试通过以下方式使其成为全局性的:

global transfactor_count
transfactor_count = 5.6
csv_data["transformation_edited"] = csv_data["transformation_edited"].apply(lambda x: x * transfactor_count)

但正如 jezrael 指出的那样:

csv_data["transformation_edited"] = csv_data["transformation_edited"] * transfactor_count 

更加优雅。

您可能必须先将数据类型更改为 float:

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

关于python - 在 Pandas 的列上应用 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41848480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com