我有一个pandas df,我试图根据每一行相对于另一列值的相对位置来填充新列。假设MyColumn在“ A”(总是在第一行),“ B”和“ C”中分别有一个实例,它们以该顺序出现,但是在A和B以及B和C之间有一些行。我想有一个新的列,其值是“ A”,“ B”或“ C”,具体取决于行相对于那些字母的位置。例如,如果A在MyColumn的第1行中,而B在第17行,则我希望NewColumn的第1-16行的值是“ A”。到目前为止,这就是我所拥有的。
df['NewColumn'] = 'NotAssigned'
a_idx = df.index[df['MyColumn']=='A']
b_idx = df.index[df['MyColumn']=='B']
c_idx = df.index[df['MyColumn']=='C']
for i in df.index:
if i < b_idx :
df.set_value[i, 'NewColumn','A']
elif i < c_idx :
df.set_value[i, 'NewColumn','B']
else:
df.set_value[i, 'NewColumn','C']
运行此代码时,我在第0行收到以下错误:
TypeError: 'method' object is not subscriptable
这似乎很简单,我在这里做什么错了?