猿问

使用循环将数据框中列中的每一行替换为它出现的实例

我的数据框中有一列称为“数据”。我尝试使用 For 循环将每个值替换为其出现的第一个实例的编号。例如


BatchID   ->   BatchID

Lot 11           1

Lot 11           1

Lot 11           1

Lot 11           1

Lot 12           2

Lot 12           2

Lot 13           3

Lot 14           4

Lot 14           4

Lot 14           4

这是我的代码:


unique_batches = ['Lot 11', 'Lot 12', 'Lot 13', 'Lot 14']


for i in range(len(data['BatchID'])):

    for batch in unique_batches:

        if data['BatchID'][i][:6] == batch:

            data['BatchID'][i] = unique_batches.index(batch) + 1

这是我收到的错误:


TypeError: 'int' object is not subscriptable

---> 69         if data['BatchID'][i][:10] == batch:


慕尼黑5688855
浏览 109回答 2
2回答

神不在的星期二

这里不需要切片batches = ['Lot 11', 'Lot 12', 'Lot 13', 'Lot 14']这是精炼后的代码for i in range(len(df['BatchId'])):    for batch in batches:        if df["BatchId"][i]==batch:            df["BatchId"][i] = batches.index(batch)+1

猛跑小猪

您也可以使用替换功能。以下是如何执行此操作的示例:import pandas as pddf = pd.DataFrame({'BatchID':['Lot 11','Lot 11','Lot 11','Think1','Lot 12',                              'Lot 12','Lot 13','Lot 14','Lot 14','Lot 14']})df = df.replace(r'Lot 1','',regex=True)print(df)结果如下:请注意,其中一个值是Think1。所以它没有被更换,因为它不符合模式。  BatchID0       11       12       13  Think14       25       26       37       48       49       4
随时随地看视频慕课网APP

相关分类

Python
我要回答