【发布时间】:2016-04-20 11:18:22
【问题描述】:
我想在熊猫数据框的每一行上运行一个函数,并在派生列得分中输出它的值:下面显示的函数是一个 lambda,但该函数应该能够按父数据框列标签进行索引并访问列名如 row['col1'] ,但一个系列对象被传递给丢失列标签信息的 lambda 函数:
例如:
def calculate(row):
cols=row.columns
loc=row['loc']
h=row['h']
isst=row['Ist']
Hol=row['Hol']
return loc+h+len(cols)
a['score']=a.apply(lambda row:calculate(row),axis=1)
给予:
AttributeError: ("'Series' object has no attribute 'columns'", u'occurred at index 0')
那么如何在 lambda 函数中访问一个命名序列,比如命名元组?
一个快速的破解方法是:
a['score']=a.apply(lambda row:calculate(makedict(row,row.index)),axis=1)
makedict 函数将为每一行创建一个字典,以便在函数中通过列标签访问它。但是有熊猫的方式吗?
【问题讨论】:
标签: python pandas lambda apply