为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑5688855 2023-08-08 10:18:37
我的数据框中有一列称为“数据”。我尝试使用 For 循环将每个值替换为其出现的第一个实例的编号。例如BatchID   ->   BatchIDLot 11           1Lot 11           1Lot 11           1Lot 11           1Lot 12           2Lot 12           2Lot 13           3Lot 14           4Lot 14           4Lot 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:
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

这里不需要切片


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


查看完整回答
反对 回复 2023-08-08
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您也可以使用替换功能。


以下是如何执行此操作的示例:


import pandas as pd

df = 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。所以它没有被更换,因为它不符合模式。


  BatchID

0       1

1       1

2       1

3  Think1

4       2

5       2

6       3

7       4

8       4

9       4


查看完整回答
反对 回复 2023-08-08
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信