使用非唯一索引在Pandas DataFrame中查找和更新行

时间:2016-07-14 19:38:46

标签: python pandas

我有一个带有非唯一索引的pandas DataFrame,我需要更新其中一行。如果我可以用数字索引它,我可以更新该行,如下所示:

array = np.random.randint(1, 10, (3, 3))
df = pd.DataFrame(array, index=['one', 'one', 'two'], columns=['col1', 'col2', 'col3'])

# df looks like this:
#        col1   col2    col3
#one        2       3       6
#one        3       1       5
#two        4       5       2


new_data = pd.Series({'col1': 'new', 'col2': 'new', 'col3': 'new'})
df.iloc[0] = new_data

但如果我不知道行号怎么办?我们只想设置第一行的索引是'一个'。所以,我想使用.loc找到切片,然后将我的新值分配给第一行。

new_data = pd.Series({'col1': 'new', 'col2': 'new', 'col3': 'new'})
df.loc['one'][0] = new_data

但是,这是使用链式索引的分配,这不是很好。有没有不同的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用df.iloc[(df.index == 'one').argmax()]访问它。

所以你的任务看起来像是:

df.iloc[(df.index == 'one').argmax()] = new_data