Python 使用dataframe apply函数根据所选行创建新列

Python 使用dataframe apply函数根据所选行创建新列,python,pandas,dataframe,apply,Python,Pandas,Dataframe,Apply,我试图在数据帧中生成一个新列,该列等于当前行索引减去用户最初选择的行的索引。假设我们有这个数据帧: A B C 0 foo bar 1 bar foo 2 foo bar 我们的用户选择了第1行。我希望C列的值如下: A B C 0 foo bar -1 1 bar foo 0 2 foo bar 1 我已经知道,这可以通过使用如下内容迭代数据帧来实现: for index,row in df.iterrows():

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

     A    B C
0  foo  bar  
1  bar  foo  
2  foo  bar  
我们的用户选择了第1行。我希望C列的值如下:

    A    B   C
0  foo  bar -1
1  bar  foo  0
2  foo  bar  1
我已经知道,这可以通过使用如下内容迭代数据帧来实现:

for index,row in df.iterrows():
    df['C'].loc[index] = index - USER_SELECTED_INDEX
然而,这是非常缓慢的。事实上,它太慢了,根本不起作用

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

def applyCol(index):
    df['C'].loc[index] = index - USER_SELECTED_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
也许试试这个

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

找到了我想要的答案。有兴趣的人士:

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

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

快乐编码

找到了我想要的答案。有兴趣的人士:

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

df['C'] = df.apply(applyCol, axis=1)
快乐编码