用父数据帧索引索引pandas系列

2024-04-18 18:07:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在pandas dataframe的每一行上运行一个函数,并在派生的列score中输出它的值:例如,下面显示的函数是一个lambda,但该函数应该能够按父dataframe列标签编制索引并访问列名,如row['col1'],但将一个series对象传递给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)

给出:

^{pr2}$

那么如何访问命名序列,比如lambda函数中的命名元组?在

快速破解的方法是:

a['score']=a.apply(lambda row:calculate(makedict(row,row.index)),axis=1)

makedict函数将为每一行创建一个字典,以便可以通过列标签在函数中访问它。但是有熊猫的方式吗?在


Tags: lambda函数dataframepandas标签命名locrow
2条回答

为什么不:

a['score']=a.apply(lambda row:row['loc'] + row['h']+len(row.index),axis=1)

最后找到了有助于此的tou-dict函数:

def calculate(row):
    row=row.to_dict()
    loc=row['loc']
    h=row['h']
    isst=row['Ist']
    Hol=row['Hol']
    return loc+h+len(row.keys())

a['score']=a.apply(calculate,axis=1)

相关问题 更多 >