我的数据框中有一列称为“数据”。我尝试使用 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 回答
![?](http://img1.sycdn.imooc.com/545847d40001cbef02200220-100-100.jpg)
神不在的星期二
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
![?](http://img1.sycdn.imooc.com/533e50ed0001cc5b02000200-100-100.jpg)
猛跑小猪
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
添加回答
举报
0/150
提交
取消