import pandas as pd df = pd.read_excel('2021届学生成绩列表-数据处理.xlsx',index_col=None,usecols=[1,8,19]) gb = df.groupby('指导教师') df['指导教师'] = df['指导教师'].astype(str) gb = df.groupby('指导教师') writer = pd.ExcelWriter('分组数据.xls') for name, group in gb: #print(name) #print(group) group.to_excel(writer, sheet_name=1, index=False) writer.save()
时间: 2023-12-09 17:05:58 浏览: 31
在你的代码中,`gb = df.groupby('指导教师')` 这一行之后,你对 `df` 中的 `指导教师` 列进行了类型转换,但是在下面的循环中,你又重新使用了 `gb` 对 `df` 进行了分组。这个时候,`gb` 中的分组信息已经不再是之前的分组信息了,因为你对 `df` 进行了类型转换。
因此,你需要将 `gb = df.groupby('指导教师')` 这一行放在类型转换之后,才能保证分组的准确性。具体地,你可以这样修改代码:
```python
import pandas as pd
df = pd.read_excel('2021届学生成绩列表-数据处理.xlsx', index_col=None, usecols=[1, 8, 19])
df['指导教师'] = df['指导教师'].astype(str)
gb = df.groupby('指导教师')
writer = pd.ExcelWriter('分组数据.xls')
for name, group in gb:
#print(name)
#print(group)
group.to_excel(writer, sheet_name=name, index=False)
writer.save()
```
这样就可以正确地按照指导教师进行分组,并将每个分组的数据保存到不同的 Excel 表格中了。注意,这里将 `sheet_name` 参数改为了 `name`,这样可以将每个分组的表格保存到以指导教师名称命名的表格中。
相关问题
import pandas as pd df = pd.read_excel('2021届学生成绩列表-数据处理.xlsx', index_col=None, usecols=[1, 8, 19]) df['指导教师'] = df['指导教师'].astype(str) gb = df.groupby('指导教师') writer = pd.ExcelWriter('分组据.xlsx') for name, group in gb: group.to_excel(writer, sheet_name=name, index=False) writer._save()
这段代码的功能是将读取的 Excel 文件进行分组,并将每个分组的数据写入不同的 Excel 表格中。具体的实现步骤如下:
1. 使用 pandas 的 read_excel 方法读取 Excel 文件,并指定只读取第 2、9、20 列的数据,其中第 2 列为学生姓名,第 9 列为指导教师姓名,第 20 列为课程成绩。
```python
df = pd.read_excel('2021届学生成绩列表-数据处理.xlsx', index_col=None, usecols=[1, 8, 19])
```
2. 将 '指导教师' 列的数据类型转换为字符串类型,并以此为关键字进行分组。
```python
df['指导教师'] = df['指导教师'].astype(str)
gb = df.groupby('指导教师')
```
3. 针对每个分组,将其数据写入不同的 Excel 表格中。
```python
writer = pd.ExcelWriter('分组据.xlsx')
for name, group in gb:
group.to_excel(writer, sheet_name=name, index=False)
writer._save()
```
其中,`pd.ExcelWriter('分组据.xlsx')` 表示创建一个名为 '分组据.xlsx' 的 Excel 文件,并赋值给变量 writer,`group.to_excel(writer, sheet_name=name, index=False)` 表示将当前分组的数据写入 Excel 文件中,`writer._save()` 表示保存 Excel 文件。
df = pd.read_excel('readers.xlsx') print(df)这句话怎么防止输出行号从0开始并且没有列名
可以在调用`read_excel`函数时,设置`header=None`参数来防止自动将第一行作为列名,设置`index_col=None`参数来防止自动添加行号。示例如下:
```python
import pandas as pd
# 读取excel文件,不添加列名和行号
df = pd.read_excel('readers.xlsx', header=None, index_col=None)
# 打印数据框
print(df)
```
在上面的代码中,`read_excel`函数读取了`readers.xlsx`文件,并将`header=None`和`index_col=None`参数传入,以防止自动添加列名和行号。然后我们通过`print`函数输出数据框。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)