【问题标题】:Python to slice a dataframe to many excel filesPython将数据框切片为许多excel文件
【发布时间】:2018-08-21 03:06:00
【问题描述】:

我想将一个数据框拆分为多个 excel 文件,使用其行值的名称作为文件的名称

示例数据帧

    account_key    State
0    111            NY
1    111            CA
2    222            NJ
3    888            WE
4    888            TL

预期结果:

第一个excel文件名为account_111.xlsx,里面的数据是

account_key    State
 111            NY
 111            CA

第二个excel文件名为account_222.xlsx,里面的数据是

account_key    State
222             NJ

我的代码没有给我预期的结果

names = df['account_key'].unique().tolist()
writer = pd.ExcelWriter(path + 'my.xlsx', engine='xlsxwriter')
for myname in names:
    mydf = df.loc[df['account_key']==myname]
    mydf.to_excel(writer)
    writer.save()    

顺便说一句,如何修改代码以在循环时将工作表从“sheet1”重命名为“myNote”?

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    IIUC,只需在groupby 中使用to_excel

    for acc, g in df.groupby('account_key'):
        g.to_excel(f'account_{acc}.xlsx')
    

    如果您有不支持f-strings 的旧版python,请使用

    for acc, g in df.groupby('account_key'):
        g.to_excel('account_{}.xlsx'.format(acc))
    

    要命名工作表,只需将名称作为第二个参数传递

    g.to_excel(f'account_{acc}.xlsx', 'myNote')
    

    【讨论】:

    • 你能解释一下for循环中的g代表什么吗?谢谢
    • @Learn groupby 将根据您拥有的account_keys 对您的数据框进行分组。当您遍历此 groupby obj 时,acc 获取组名称的值(在本例中为account_key 中的值),g 是一个仅包含对应的acc 的数据框。我在group 之后将其命名为g,但如果您认为有更合适/直观的名称,您可以将其命名为其他名称;)
    • @RafaelC 还有一个问题,如何修改代码以在循环时将每个工作表从“sheet1”重命名为“myNote”?谢谢,你的代码太短了
    • @Make_A_Living 谢谢!只需添加名称作为第二个参数,检查编辑;)
    • @RafaelC 邀请您回答我的触摸问题stackoverflow.com/questions/51938729/…
    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 2016-09-04
    • 2016-03-23
    • 2020-09-15
    • 2019-05-10
    • 1970-01-01
    • 2013-04-17
    • 2018-02-22
    相关资源
    最近更新 更多