簡體   English   中英

Python,Pandas從數據框創建新數據

[英]Python, Pandas from data frame to create new data

原始電子表格有2列。 我想根據給定的標准(根據月份)選擇行,並將其放入新文件中。

原始文件如下所示:

在此處輸入圖片說明

我正在使用的代碼:import os import pandas as pd

working_folder = "C:\\My Documents\\"

file_list = ["Jan.xlsx", "Feb.xlsx", "Mar.xlsx"]

with open(working_folder + '201703-1.csv', 'a') as f03:
    for fl in file_list:
        df = pd.read_excel(working_folder + fl)
        df_201703 = df[df.ARRIVAL.between(20170301, 20170331)] 
        df_201703.to_csv(f03, header = True)

with open(working_folder + '201702-1.csv', 'a') as f02:
    for fl in file_list:
        df = pd.read_excel(working_folder + fl)
        df_201702 = df[df.ARRIVAL.between(20170201, 20170231)] 
        df_201702.to_csv(f02, header = True)

with open(working_folder + '201701-1.csv', 'a') as f01:
    for fl in file_list:
        df = pd.read_excel(working_folder + fl)
        df_201701 = df[df.ARRIVAL.between(20170101, 20170131)] 
        df_201701.to_csv(f01, header = True)

結果如下:

在此處輸入圖片說明

我要改進的地方:

  1. 將它們另存為xlsx文件而不是.csv
  2. 沒有第一個索引列
  3. 僅保留1行(頂部)標頭(現在每個csv具有3行標頭)

我怎樣才能做到這一點? 謝謝。

我認為,需要建立list of DataFrame S, concat在一起,然后寫入文件:

dfs1 = []

for fl in file_list:
    df = pd.read_excel(working_folder + fl)
    dfs1.append(df[df.ARRIVAL.between(20170101, 20170131)] )

pd.concat(dfs1).to_excel('201701-1.xlsx', index = False)

應該通過列表理解簡化什么:

file_list = ["Jan.xlsx", "Feb.xlsx", "Mar.xlsx"]
dfs1 = [pd.read_excel(working_folder + fl).query('20170101 >= ARRIVAL >=20170131') for fl in file_list]

pd.concat(dfs1).to_excel('201701-1.xlsx', index = False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM