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)
快乐编码