E:\anaconda\python.exe F:\pythonproject\江苏数据处理1\企业类型到各公司.py Traceback (most recent call last): File "F:\pythonproject\江苏数据处理1\企业类型到各公司.py", line 13, in <module> excel_to_csv('C:\\Users\\ASUS\\Desktop\\全部企业\\dl', '时间', '报警数/百公里') File "F:\pythonproject\江苏数据处理1\企业类型到各公司.py", line 9, in excel_to_csv selected_columns = excel_file.iloc[:, [col_1, col_2]] # 选出每个Excel中的指定列 File "E:\anaconda\lib\site-packages\pandas\core\indexing.py", line 961, in __getitem__ return self._getitem_tuple(key) File "E:\anaconda\lib\site-packages\pandas\core\indexing.py", line 1458, in _getitem_tuple tup = self._validate_tuple_indexer(tup) File "E:\anaconda\lib\site-packages\pandas\core\indexing.py", line 769, in _validate_tuple_indexer self._validate_key(k, i) File "E:\anaconda\lib\site-packages\pandas\core\indexing.py", line 1372, in _validate_key raise IndexError(f".iloc requires numeric indexers, got {arr}") IndexError: .iloc requires numeric indexers, got ['时间' '报警数/百公里']
时间: 2023-07-06 10:36:21 浏览: 177
根据报错提示,你传入的列名参数`col_1`和`col_2`应该是字符串类型,但是在使用`.iloc`选取指定列时需要传入的是数值类型的索引。
为了解决这个问题,我们需要使用`.loc`方法来选取指定列。`.loc`方法可以接收列名作为参数,而不是数值类型的索引。以下是修改后的代码:
```python
import pandas as pd
import os
def excel_to_csv(folder_path, col_1, col_2):
for file_name in os.listdir(folder_path):
if file_name.endswith('.xlsx'):
excel_file = pd.read_excel(os.path.join(folder_path, file_name))
new_file_name = file_name[:-5] + '.csv'
selected_columns = excel_file.loc[:, [col_1, col_2]] # 使用.loc选取指定列
selected_columns.columns = ['new_name_1', 'new_name_2']
selected_columns.to_csv(new_file_name, index=False)
excel_to_csv('C:\\Users\\ASUS\\Desktop\\全部企业\\dl', '时间', '报警数/百公里')
```
请注意,修改后的代码中使用`.loc`方法来选取指定列,而不是`.iloc`方法。
阅读全文