将字符串替换为根据数据帧中另一列的最大值计算出的值

问题描述 投票:1回答:1

我有一个ID列为dtype Object(包含INT和STR)的数据框,因此我试图使用np.where依次用下一个最高编号替换它们。但是由于某种原因,下面的示例仅替换了两个字符串之一,我不知道为什么?

df = pd.DataFrame({'IDstr':['480610_ABC_087', '78910_ABC_087','4806105017087','414149'],
                       'IDint':[ 0, 0, 4806105017087, 414149]})
print (df)
unique_str_IDs = df['IDstr'][df['IDstr'].str.contains("ABC", na=False)].unique()
for i in range(len(unique_str_IDs)):
    df['SKUintTEST']=np.where(df['IDstr'] == unique_str_IDs[i].strip(), 
            df['SKUint_y'].max()+i+1, df['SKUint_y'])

有人有任何想法吗?

python pandas numpy
1个回答
1
投票

您可以将map与以递增方式创建的字典一起用于每个唯一ID,然后将map与原始值一起用于未映射的行:

fillna
© www.soinside.com 2019 - 2024. All rights reserved.