Python 编写函数以迭代数据帧

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_

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

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

-将结果乘以调用计划值

-根据通话计划增加每月费用

有两种计划类型:

冲浪:月费:每月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_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