如何创建新的 pandas 列,其中列表值 ==df 索引但列表与原始数据帧的长度不同

how to create new pandas column where list value ==df index but list is a different length to orignal dataframe

我想在我的原始数据框中添加一个新列,其中我的列表值 == 数据框索引添加 1 其他 0。但是,我的列表大小不同...我尝试使用 for 循环但是它太慢了..并且想用列表comp或矢量化(或任何其他快速的方式)来完成它..关于我如何做的任何想法

我的数据:

列表=[501,205,432,....]

我的代码:

df = df.reset_index(drop=True)

for r in range(0,len(df)):
    for peak in peaks:
        if df.index[r]==peak:
            df.loc[r,"peaks"]=1
        else:
            df.loc[r,"peaks"]=0

尝试在索引上使用 isin

import pandas as pd

df = pd.DataFrame({'a': {100: 1, 200: 2, 300: 3, 400: 4, 500: 5}})

peaks = [300, 400, 500]

df['peaks'] = df.index.isin(peaks).astype(int)

print(df)

通过numpy

矢量化
import pandas as pd
import numpy as np

df = pd.DataFrame({'a': {100: 1, 200: 2, 300: 3, 400: 4, 500: 5}})

peaks = [300, 400, 500]

df['peaks'] = np.where(df.index.isin(peaks), 1, 0)

print(df)

输出:

     a  peaks
100  1      0
200  2      0
300  3      1
400  4      1
500  5      1