【问题标题】:Save groupedby items to different excel sheet将分组项目保存到不同的 Excel 工作表
【发布时间】:2017-09-28 01:39:14
【问题描述】:

我有一个 Excel 文件,我想根据列名“步骤编号”进行分组。并想要相应的值。这是我写的一段代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
fpath=('/Users/Anil/Desktop/Test data.xlsx')
df=pd.read_excel(fpath)
data=df.loc[:,['Step No.','Parameter','Values']]
grp_data=pd.DataFrame(data.groupby(['Step No.','Values']).size().reset_index())
grp_data.to_excel('/Users/Anil/Desktop/Test1 data.xlsx')

数据按照我想要的方式分组。

Step No.    Values
    1            62
    1            62.5
    1            63
    1            66.5
    1            68
    1            70
    1            72
    1            76.5
    1            77
    2            66.5
    2            67
    2            69
    3            75.5
    3            77

但是,我想要在不同的 Excel 表中对应于每个步骤号的数据,即在一张表中对应于步骤号 1 的所有值,在另一张表中对应于步骤号 2 的所有值,依此类推。我想我应该使用某种迭代,但不知道到底是哪种。

【问题讨论】:

    标签: python excel pandas numpy


    【解决方案1】:

    应该这样做:

    from pandas import ExcelWriter
    
    steps = df['Step No.'].unique()
    dfs = [df.loc[df['Step No.']==step] for step in steps]
    def save_xls(list_dfs, xls_path):
        writer = ExcelWriter(xls_path)
        for n, df in enumerate(list_dfs):
            df.to_excel(writer,'sheet%s' % n)
        writer.save()
    save_xls(dfs, 'YourFile.xlsx')
    

    【讨论】:

    • 我尝试了您的解决方案。但是,“[df.loc[df['Step No.']==step] for step in steps]”存在错误“方法对象不可迭代”。我认为代码应该是:steps=df['Step No.'].unique()
    • 是的,unique 是方法,应该被调用。已编辑。
    猜你喜欢
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多