Python 编写函数以迭代数据帧
我有以下数据帧,需要执行以下操作: -从呼叫总数中减去免费套餐限制 -将结果乘以调用计划值 -根据通话计划增加每月费用 有两种计划类型: 冲浪:月费:每月2.05万美元 -超过限制后:1分钟:3美分 最终:月费:$703000每月分钟 -超过限制后:1分钟:1分 以下是我尝试创建的函数,并尝试将其应用于新列:Python 编写函数以迭代数据帧,python,pandas,Python,Pandas,我有以下数据帧,需要执行以下操作: -从呼叫总数中减去免费套餐限制 -将结果乘以调用计划值 -根据通话计划增加每月费用 有两种计划类型: 冲浪:月费:每月2.05万美元 -超过限制后:1分钟:3美分 最终:月费:$703000每月分钟 -超过限制后:1分钟:1分 以下是我尝试创建的函数,并尝试将其应用于新列: def额外成本(行): 调用=行['min_1','min_2','min_3','min_4','min_5','min_6','min_7','min_8','min_9','min_
def额外成本(行):
调用=行['min_1','min_2','min_3','min_4','min_5','min_6','min_7','min_8','min_9','min_10','min_11','min_12']
如果计划名称=‘冲浪’:
如果呼叫>500:
返回(呼叫-500)
其他:
返回“NaN”
如果平面_name=='ultimate':
如果呼叫>3000:
返回(呼叫-3000)
其他:
返回“NaN”
其他:
返回“NaN”
用户呼叫1['sum']=用户呼叫1.apply(额外成本(行))
这是数据帧头:
我一直无法弄清楚它为什么不工作,并返回“名称‘行’未定义”。如果有更好的解决方案,请让我知道 你能试一试吗
将numpy导入为np
def额外费用(世界其他地区):
calls=行[[min_1'、[min_2'、[min_3'、[min_4'、[min_5'、[min_6]、[min_7]、[min_8]、[min_9]、[min_10]、[min_11]、[min_12']
如果row.plan_name=='surf':
总计=调用次数[调用次数>500].sum()
如果总计!=0:
返回总数
其他:
返回np.nan
如果row.plan_name=='ultimate':
总计=调用次数[调用次数>3000].sum()
如果总计!=0:
返回总数
其他:
返回np.nan
其他:
返回np.nan
用户呼叫1['sum']=用户呼叫1.apply(额外成本,axis=1)
用户的调用是否引用其行中所有minux
列的总和?函数是apply的第一个位置参数。另外,指定axis=1将函数应用于每一行。因此,请尝试:user\u calls1['sum']=user\u calls1.apply(额外成本,axis=1)
我尝试了,但没有成功。我在索引(1000,Anamaria,Bauer,ultimate)处收到消息“Series”对象没有“plan_name”属性“@Chris很抱歉输入错误。我键入了plane\u name
。你现在可以试试吗?是的,我在粘贴代码时修复了它,但仍然有相同的问题user\u calls1
有一个名为plan\u name
的列?尝试打印(user\u calls1.columns)
它没有显示在“信息”下。出于某种原因,用户id、名字、姓氏和计划名没有显示。它来自于合并pivot表函数,所以idk,如果这是原因的话。哦,我使用它作为索引
user_id first_name last_name plan_name min_1 min_2 min_3 min_4 min_5 \
1000 Anamaria Bauer ultimate NaN NaN NaN NaN NaN
1001 Mickey Wilkerson surf NaN NaN NaN NaN NaN
1002 Carlee Hoffman surf NaN NaN NaN NaN NaN
1003 Reynaldo Jenkins surf NaN NaN NaN NaN NaN
1004 Leonila Thompson surf NaN NaN NaN NaN 181.58
user_id first_name last_name plan_name min_6 min_7 min_8 min_9 \
1000 Anamaria Bauer ultimate NaN NaN NaN NaN
1001 Mickey Wilkerson surf NaN NaN 171.14 297.69
1002 Carlee Hoffman surf NaN NaN NaN NaN
1003 Reynaldo Jenkins surf NaN NaN NaN NaN
1004 Leonila Thompson surf 261.32 358.45 334.86 284.60
user_id first_name last_name plan_name min_10 min_11 min_12
1000 Anamaria Bauer ultimate NaN NaN 116.83
1001 Mickey Wilkerson surf 374.11 404.59 392.93
1002 Carlee Hoffman surf 54.13 359.76 363.24
1003 Reynaldo Jenkins surf NaN NaN 1041.00
1004 Leonila Thompson surf 341.63 452.98 403.53