df2=pd.read_csv('day01改.csv') for row in df2: if row['type']=='a': row['type']=1 elif row['type']=='b': row['type']=2 elif row['type']=='c': row['type']=3 elif row['type']=='d': row['type']=4 elif row['type']=='e': row['type']=5 elif row['type']=='f': row['type']=6 elif row['type']=='g': row['type']=7 elif row['type']=='h': row['type']=8 elif row['type']=='i': row['type']=9 elif row['type']=='j': row['type']=10 elif row['type']=='k': row['type']=11 elif row['type']=='l': row['type']=12 elif row['type']=='m': row['type']=13 elif row['type']=='n': row['type']=14 elif row['type']=='o': row['type']=15 elif row['type']=='p': row['type']=16 elif row['type']=='q': row['type']=17 elif row['type']=='r': row['type']=18 elif row['type']=='s': row['type']=19 elif row['type']=='t': row['type']=20 TypeError: string indices must be integers
时间: 2023-10-15 19:07:05 浏览: 122
python读csv文件时指定行为表头或无表头的方法
出现`TypeError: string indices must be integers`错误是因为在迭代`df2`的过程中,使用了类似字典的索引方式访问行数据。然而,DataFrame对象的迭代默认是按列进行的,因此无法使用`row['type']`这样的方式来访问行数据中的某个字段。
如果你想要逐行遍历DataFrame对象并对某个字段进行映射,可以使用`iterrows()`方法。以下是修正代码的示例:
```python
import pandas as pd
df2 = pd.read_csv('day01改.csv')
for index, row in df2.iterrows():
if row['type'] == 'a':
df2.at[index, 'type'] = 1
elif row['type'] == 'b':
df2.at[index, 'type'] = 2
elif row['type'] == 'c':
df2.at[index, 'type'] = 3
# 其他映射规则...
df2.to_csv('day01改.csv', index=False)
```
在上述代码中,我们使用`iterrows()`方法来遍历DataFrame对象`df2`的每一行。对于每一行,我们检查`row['type']`的值,并根据不同的条件进行映射。使用`at[index, 'type']`来更新相应行的`type`字段。
最后,我们使用`to_csv()`函数将结果保存回原来的CSV文件中。
请根据实际需求修改映射规则和文件路径,以满足你的需求。同时,注意修改的CSV文件路径不能与当前读取的文件路径相同,避免出现冲突。
阅读全文