根据特定索引将值设置为新列

set value to new column according to specific index

我想在 df 中创建新的列名 pred_date 并根据特定索引设置值。

例如对于索引 [1, 2, 3] 我想将值设置为 date 列中的值。

df:

    date   label    
1   1.1     1  
2   2.1     0
3   3.1     1 
4   4.1     1

预期输出df

    date   label    pred_date    
1   1.1     1       1.1 
2   2.1     0       2.1
3   3.1     1       3.1
4   4.1     1       Nan

您可以使用 index.isin + where:

df['pred_date'] = df['date'].where(df.index.isin([1,2,3]))

输出:

   date  label  pred_date
1   1.1      1        1.1
2   2.1      0        2.1
3   3.1      1        3.1
4   4.1      1        NaN

使用pd.Series.where:

df['pred'] = df['date'].where(df.index != 4)

输出:

>>> df
   date  label  pred
1   1.1      1   1.1
2   2.1      0   2.1
3   3.1      1   3.1
4   4.1      1   NaN

你实际上可以只使用 .loc:

df.loc[[1, 2, 3], 'pred'] = df['date']

输出:

>>> df
   date  label  pred
1   1.1      1   1.1
2   2.1      0   2.1
3   3.1      1   3.1
4   4.1      1   NaN

或者:

df['pred'] = df.loc[[1, 2, 3], 'date']