Python 应用多个自定义函数
我是python和pandas的新手。我需要对pandas dataframe进行一些简单的解析,以获得一个新的dataframe,它涉及多个函数。下面是一个玩具示例:Python 应用多个自定义函数,python,pandas,Python,Pandas,我是python和pandas的新手。我需要对pandas dataframe进行一些简单的解析,以获得一个新的dataframe,它涉及多个函数。下面是一个玩具示例: df = pd.DataFrame({'A' : pd.Series(["T100", "T100", "M100", "M100"]), 'B' : pd.Series(["520", "620", "720", "820"]), 'C' : pd.Series(["10/50", "20/50", "30/50", "50/
df = pd.DataFrame({'A' : pd.Series(["T100", "T100", "M100", "M100"]), 'B' : pd.Series(["520", "620", "720", "820"]), 'C' : pd.Series(["10/50", "20/50", "30/50", "50/50"])})
>>> df
A B C
0 T100 520 10/50
1 T100 620 20/50
2 M100 720 30/50
3 M100 820 50/50
这就是我尝试过的(当然它不起作用-它返回了错误AttributeError:“DataFrame”对象没有属性“agg”
,但我想做的事情就在这里):
我知道我的方法并不是最有效的,因为每次我计算一个函数时,apply
函数都会在相同的行上重复。有人能帮我吗
>>> ndf = df.apply(lambda x: pd.Series(data=[get_pat_ID(x), get_funcB(x)], index=['pat_ID','get_funcB']), axis=1)
>>> ndf
pat_ID get_funcB
0 100 520_10/50
1 100 620_20/50
2 100 NA
3 100 NA
>>> pd.concat([df,ndf], axis=1)
A B C pat_ID get_funcB
0 T100 520 10/50 100 520_10/50
1 T100 620 20/50 100 620_20/50
2 M100 720 30/50 100 NA
3 M100 820 50/50 100 NA
甚至使用简单循环:
>>> ndf = df.copy()
>>> for k,v in funcdict.iteritems():
... ndf[k] = ndf.apply(v, axis=1)
...
>>> ndf
A B C funcB pat_ID
0 T100 520 10/50 520_10/50 100
1 T100 620 20/50 620_20/50 100
2 M100 720 30/50 NA 100
3 M100 820 50/50 NA 100
很抱歉反应太晚!谢谢你的回答!
>>> ndf = df.copy()
>>> for k,v in funcdict.iteritems():
... ndf[k] = ndf.apply(v, axis=1)
...
>>> ndf
A B C funcB pat_ID
0 T100 520 10/50 520_10/50 100
1 T100 620 20/50 620_20/50 100
2 M100 720 30/50 NA 100
3 M100 820 50/50 NA 100