СОЗДАНИЕ COLUMN CALLED ID, АВТОМАТИЧЕСКОЕ УВЕЛИЧЕНИЕ СОГЛАСНО СТРОКАМ В ФРЕЙМЕ ДАННЫХ - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь написать код, который просматривает определенный каталог, выбирает .xlsx файлы расширения, затем объединяет листы и создает один лист Excel, затем удаляет строку, если FAMILYNAME AND FIRSTNAME имеют значение null, создает код столбец для каждого файла, который он создает, например, CODE = 1 для первого буклета, над которым он закончил работу, затем 2 для второго и так далее, тогда он создаст столбец с именем ID, который будет генерировать значения от 1 до общего количества строк во фрейме данных, хотя на этом я столкнулся с проблемой. Кто-нибудь может помочь? Спасибо!

os.chdir(r"C:\Users\Kimanya\jupyter lessons\REMOTE WORK\New folder\example")
def read_excel_sheets(xls_path):
    """Read all sheets of an Excel workbook and return a single DataFrame"""
    print(f'Loading {xls_path} into pandas')
    xl = pd.ExcelFile(xls_path)
    df = pd.DataFrame()
    columns = None
    for idx, name in enumerate(xl.sheet_names):
        print(f'Reading sheet #{idx}: {name}')
        #sheet = xl.parse(name)
        sheet = xl.parse(name,skiprows=1)
        #if idx == 0:
            # Save column names from the first sheet to match for append
# *****************THE FOLLOWINF TWO LINES ARE SO IMPORTANT IF THE EXCEL WORK SHEETS ARE HAVING THE SAME NUMBER OF COLUMNS AND IN THE SAME ORDER***********
           # columns = sheet.columns
       # sheet.columns = columns
#****************************************************************************************#        
        # Assume index of existing data frame when appended
        df = df.append(sheet, ignore_index=False)
    return df
n=0
for files in os.listdir():
    if files.endswith(".xlsx"):
        kim = pd.read_excel(files, sheet_name=None,header=0)
        kim.keys()
        kim = pd.concat(kim, ignore_index=True)
        kim = pd.concat(pd.read_excel(files, sheet_name=None), ignore_index=True)
        kim =kim[kim['FAMILYNAME'].notna() & kim['FIRSTNAME'].notna()]
        kim =kim[kim.FAMILYNAME !='FAMILYNAME']
        row,col = kim.shape
        #############Alternatively you can use the code above in just a single line as below###########
        #kim= pd.concat(pd.read_excel(files, sheet_name=None), ignore_index=True)

        print(kim.shape)

    if files.endswith(".xlsx"):
  #HOW TO AUYOMATICALLY IMPORT THE FILE NAMES AND APPEND THEM
            stops = read_excel_sheets(files)
            n = n+1
            stops['ID'] = pd.Series(ID)
            stops['CODE']= n
            ID = list( range(1, row+1))
            stops['ID'] = pd.Series(ID)
            stops['GENDER'] = np.where((stops.GENDER == 'M'),'MALE',stops.GENDER)
            stops['GENDER'] = np.where((stops.GENDER == 'F'),'FEMALE',stops.GENDER)
            stops =stops[stops['FAMILYNAME'].notna() & stops['FIRSTNAME'].notna()]
            os.chdir(r"C:\Users\Kimanya\jupyter lessons\REMOTE WORK\New folder\TRIAL")
            stops.to_excel(files,index=False)
            os.chdir(r"C:\Users\Kimanya\jupyter lessons\REMOTE WORK\New folder\example")

Это то, что код делает после выполнения - мне бы понравилось что-то вроде этого , но я хочу, чтобы он автоматически увеличивался до всех строк в листе

...