按索引号将值添加到 pandas 数据框列

Pau*_*tez 3 python indexing list filter pandas

想象一下,我有一个表示数据帧索引的列表,如下所示:

indexlist = [0,1,4]
Run Code Online (Sandbox Code Playgroud)

以及以下数据框:

    Name    Country
0   John    BR
1   Peter   BR
2   Paul    BR
3   James   CZ
4   Jonatan CZ
5   Maria   DK
Run Code Online (Sandbox Code Playgroud)

我需要在此数据框上创建一个名为“Is it valid?”的列 如果索引行在列表中,则会添加“是”。否则将添加“否”,导致此数据框:

    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
Run Code Online (Sandbox Code Playgroud)

我有什么办法可以做到吗?

谢谢!

The*_*Guy 5

您可以将其用于isin通常与 Series 一起使用的索引,它本质上创建了一个真值数组,您可以将np.where真值和假值传递给该数组,将结果分配为一列。

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

输出:

      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
Run Code Online (Sandbox Code Playgroud)