Pandas dataframe apply函数根据选定的

2024-09-26 22:43:48 发布

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

我试图在dataframe中生成一个新列,该列等于当前行索引减去用户最初选择的行的索引。假设我们有这个数据帧:

     A    B C
0  foo  bar  
1  bar  foo  
2  foo  bar  

我们的用户选择了第1行。我希望C列的值为:

^{pr2}$

我已经知道这可以通过迭代数据帧来实现,方法如下:

for index,row in df.iterrows():
    df['C'].loc[index] = index - USER_SELECTED_INDEX

然而,这是非常缓慢的。事实上太慢了以至于不能工作。在

我的问题是,我如何使用数据框应用为了加快速度?如何将当前行的索引传递给正在应用的函数?我想做些类似的事情:

def applyCol(index):
    df['C'].loc[index] = index - USER_SELECTED_INDEX

df['C'] = df.apply(applyCol, axis=1)

Tags: 数据方法用户dataframedfforindexfoo
2条回答

找到了我想要的答案。对于感兴趣的人:

def applyCol(row):
    return row.name - USER_SELECTED_INDEX #row.name resolves to the index

df['C'] = df.apply(applyCol, axis=1)

编码快乐!在

也许试试这个。在

df.assign(C=df.index-1)
Out[28]: 
     A    B  C
0  foo  bar -1
1  bar  foo  0
2  foo  bar  1

相关问题 更多 >

    热门问题