按索引号给 Pandas 数据框的列添加值。

3

假设我有一个列表,表示数据框的索引,就像这样:

indexlist = [0,1,4]

以下是数据框:

    Name    Country
0   John    BR
1   Peter   BR
2   Paul    BR
3   James   CZ
4   Jonatan CZ
5   Maria   DK

我需要在这个数据框中创建一个名为“是否有效?”的列,如果索引行在列表中,则添加“Yes”。否则,将添加“No”,结果如下所示:
    Name    Country  Is it valid?
0   John    BR       Yes
1   Peter   BR       Yes
2   Paul    BR       No
3   James   CZ       No
4   Jonatan CZ       Yes
5   Maria   DK       No

有没有什么方法可以做到这一点?

谢谢!


不要使用虚假的布尔值(是/否),而应该考虑使用实际的布尔值(真/假)。然后,这可以简化为 df['Is it valid?'] = df.index.isin(indexlist) - BeRT2me
2个回答

5

您可以使用isin来创建一个与Series相似的索引数组,然后将该数组传递给 np.where 函数并分配结果为一列。

df['Is it valid?'] = np.where(df.index.isin(indexlist), 'Yes', 'No')

输出:

      Name Country Is it valid?
0     John      BR          Yes
1    Peter      BR          Yes
2     Paul      BR           No
3    James      CZ           No
4  Jonatan      CZ          Yes
5    Maria      DK           No

2
你可以使用iloc。
df['Is it valid?']='No'
df['Is it valid?'].iloc[indexlist] = 'Yes'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接