如何创建新的 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
我想在我的原始数据框中添加一个新列,其中我的列表值 == 数据框索引添加 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