编写函数以迭代数据框



我有以下数据帧,我需要执行以下操作:

- 从呼叫总数中减去免费包限制

-将结果乘以调用计划值

- 根据通话计划添加月度费用

有 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)

最新更新