我有以下数据帧,我需要执行以下操作:
- 从呼叫总数中减去免费包限制
-将结果乘以调用计划值
- 根据通话计划添加月度费用
有 2 种计划类型:
冲浪:月费:20 美元,每月 500 分钟
-超过限制后:1 分钟: 3 美分
旗舰版:月费:70 美元,每月 3000 分钟
-超过限制后: 1 分钟: 1 美分
这是我尝试制作并尝试将其应用于新列的功能:https://pastebin.com/iB3GwrQ9
def extra_cost(row):
calls = row['min_1', 'min_2', 'min_3', 'min_4', 'min_5', 'min_6', 'min_7', 'min_8', 'min_9', 'min_10', 'min_11', 'min_12']
if plan_name == 'surf':
if calls > 500:
return (calls - 500)
else:
return "NaN"
if plane_name == 'ultimate':
if calls > 3000:
return (calls - 3000)
else:
return "NaN"
else:
return "NaN"
user_calls1['sum'] = user_calls1.apply(extra_cost(row))
下面是数据帧头:https://pastebin.com/8HJWbgUr
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
我一直无法弄清楚为什么它不起作用并返回" 名称'行'未定义"。如果有更好的解决方案,请告诉我!
你能试一试吗?
import numpy as np
def extra_cost(row):
calls = row[['min_1', 'min_2', 'min_3', 'min_4', 'min_5', 'min_6', 'min_7', 'min_8', 'min_9', 'min_10', 'min_11', 'min_12']]
if row.plan_name == 'surf':
total = calls[calls > 500].sum()
if total != 0:
return total
else:
return np.nan
if row.plan_name == 'ultimate':
total = calls[calls > 3000].sum()
if total != 0:
return total
else:
return np.nan
else:
return np.nan
user_calls1['sum'] = user_calls1.apply(extra_cost, axis=1)