pandas Python使用循环更新excel中的单元格

o2gm4chl  于 2023-02-02  发布在  Python
关注(0)|答案(2)|浏览(259)

使用Join_DateName创建 Dataframe

data = {'Join_Date': ['2023-01', '2023-01', '2023-02', '2023-03'],
        'Name': ['Tom', 'Amy', 'Peter', 'Nick']}

df = pd.DataFrame(data)

我把df按Join_Date拆分了,可以用for循环按日期打印到excel中吗?

df_split = [df[df['Join_Date'] == i] for i in df['Join_Date'].unique()]

预期结果:

xxls0lw8

xxls0lw81#

您可以在Pandas中使用ExcelWriter方法:

import pandas as pd
import xlsxwriter

data = {'Join_Date': ['2023-01', '2023-01', '2023-02', '2023-03'],
        'Name': ['Tom', 'Amy', 'Peter', 'Nick']}

df = pd.DataFrame(data)

df_split = [df[df['Join_Date'] == i] for i in df['Join_Date'].unique()]

writer = pd.ExcelWriter("example.xlsx", engine='xlsxwriter')

skip_rows = 0
for df in df_split:
    df.to_excel(writer, sheet_name='Sheet1', startcol=2, startrow=2+skip_rows, index=False)
    skip_rows += df.shape[0]+2

writer.close()

rqmkfv5c

rqmkfv5c2#

您可以使用panda方法来完成此操作,如下所示。(如果确实需要,可以添加一个空行)

import pandas as pd

data = {'Join_Date': ['2023-01', '2023-01', '2023-02', '2023-03'],
        'Name': ['Tom', 'Amy', 'Peter', 'Nick']}

df = pd.DataFrame(data)

def add_header(x):
    x.loc[-1] = 'Join_date', 'Name'
    return x.sort_index().reset_index(drop=True)

df_split = df.groupby(['Join_Date'], group_keys=False)

df_group = df_split.apply(add_header)

df_group.to_excel('output.xlsx', index=False, header=False)

您可以添加空行,编辑add_header函数,如下所示:

def add_header(x):
    x.loc[-1] = ' ', ' '
    x = x.sort_index().reset_index(drop=True)
    x.loc[0.5] = 'Join_date', 'Name'
    x = x.sort_index().reset_index(drop=True)
    return x

相关问题