【问题标题】:export data to multiple excel files based on dates python pandas根据日期python pandas将数据导出到多个excel文件
【发布时间】:2019-08-10 10:07:31
【问题描述】:

我正在尝试根据日期将我的数据集导出到多个 Excel 文件。

这是我的桌子

datestart
+----------+
2019-03-14
2019-03-14
2019-03-12
2019-03-11
2019-03-08
2019-03-07
2019-03-06
2019-03-05
2019-03-04
2019-03-01

对于我想创建一个新文件的每个日期。

datestart   | filename
+-----------+-------------+
2019-03-14  | file_031419
2019-03-14  | file_031419
2019-03-12  | file_031219
2019-03-12  | file_031219
2019-03-08  | file_030819
2019-03-08  | file_030819
2019-03-06  | file_030619
2019-03-06  | file_030619
2019-03-06  | file_030619
2019-03-01  | file_030119

日期存储为日期时间。我不想硬编码日期。我希望脚本查找具有相同日期的列,将它们组合在一起并导出到文件名中包含日期的文件。

脚本应导出为 5 个文件。每个文件将仅包含具有特定日期的数据。

例如,file_031419 将只有 031419 作为日期的数据,file_031219 将只有 031219 的数据,等等。

file_031419 文件_031219 文件_030819 文件_030619 文件_030119

【问题讨论】:

标签: python excel pandas date export-to-excel


【解决方案1】:

你可以使用一些字符串方法和字符串格式化。

dates = [‘2019-03-01’, ‘2019-05-06’]
for date in dates:
    split_date = date.split(‘-‘)
    fname = ‘file_{}{}{}’.format(split_date[0],split_date[2],split_date[1]
    # save to .csv with fname

【讨论】:

    【解决方案2】:

    您可以使用 list(set()) 获取唯一日期列表,使用 Pandas 和 df.loc[] 根据日期对数据进行子集化,使用 pd.to_datetime() 将日期转换为您想要的文件名格式,然后使用 df.to_excel() 将数据集保存为 Excel 文件:

    import pandas as pd
    
    df = pd.Series('''2019-03-14
    2019-03-14
    2019-03-12
    2019-03-12
    2019-03-08
    2019-03-08
    2019-03-06
    2019-03-06
    2019-03-06
    2019-03-01'''.split('\n'), name='datestart', dtype=str).to_frame()
    
    df['data'] = np.random.rand(len(df))
    
    # Get unique dates
    dates = list(set(df.datestart.values))
    
    for date in dates:
        idx = df.datestart == date # Filter by unique date
        filename = 'file_'+list(set(pd.to_datetime(df.loc[idx, 'datestart']).dt.strftime('%m%d%y')))[0]+'.xlsx'
        df.loc[idx, 'data'].to_excel(filename) # Save subset of data frame as excel file
    

    【讨论】:

    • 我不想硬编码日期。我希望脚本查找具有相同日期的列,将它们组合在一起并从所有其他日期导出到单独的文件。
    • 好的,这改变了问题。你应该在你的问题中加入这些额外的细节,我会更新我的答案以反映它们。
    • 这只会导出列表中第一个日期的文件。我需要5个文件。这 5 个文件将包含具有特定日期的所有数据。file_031419 file_031219 file_030819 file_030619 file_030119
    猜你喜欢
    • 2020-09-15
    • 1970-01-01
    • 2019-08-11
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多