【发布时间】:2021-11-20 20:29:43
【问题描述】:
我有一个df,代码是:
df = """
ValOption RB test contrat
0 SLA 4 3 23
1 AC 5 4 12
2 SLA 5 5 23
3 AC 2 4 39
4 SLA 5 5 26
5 AC 3 4 52
6 SLA 4 3 64
0 SLA 4 3 23
1 AC 5 4 12
2 SLA 5 5 23
3 AC 2 4 39
4 SLA 5 5 26
5 AC 5 4 52
6 SLA 4 3 64
"""
df = pd.read_csv(StringIO(df.strip()), sep='\s+')
输出:
ValOption RB test contrat
0 SLA 4 3 23
1 AC 5 4 12
2 SLA 5 5 23
3 AC 2 4 39
4 SLA 5 5 26
5 AC 3 4 52
6 SLA 4 3 64
0 SLA 4 3 23
1 AC 5 4 12
2 SLA 5 5 23
3 AC 2 4 39
4 SLA 5 5 26
5 AC 5 4 52
6 SLA 4 3 64
现在我将它分组并获得第一个:
df_u=df.groupby(['RB','test']).first()
输出:
然后我想对每一行应用一个函数,由于某种原因我必须使用 pd.apply() 函数:
def func(row):
v1=row['RB']*3
v2=row['test']-1
return v1+v2
df_u['new_col']=df_u.apply(lambda row:func(row), axis=1)
注意:在实际业务中该函数非常复杂且冗长,所以我需要使用pd.apply()
然后我得到一个错误:
KeyError: ('RB', 'occurred at index (2, 4)')
【问题讨论】:
标签: python pandas dataframe numpy numpy-ndarray