Python Pandas для цикла над папкой, объединяющей массив numpy с каждым файлом xlsx в папке

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

Это мой первый пост, поэтому, пожалуйста, простите меня, если я не следую обычным процедурам

первый — я пытаюсь объединить массив numpy с каждым файлом xlsx во второй папке — правильный массив numpy должен быть объединен на основе количества строк в каждом файле xlsx. например, * .xlsx имеет 3 строки, тогда 7X3 numpy должны быть объединены axis = 1, которые я использовал, если elif statments (не уверен, что это лучший способ), любая помощь будет высоко оценена. Спасибо

Я получаю следующую ошибку:

 ValueError: Invalid file path or buffer object type: <class 'pandas.core.frame.DataFrame'>
  

и это относится к:

 ValueError                                Traceback (most recent call last)
<ipython-input-2-4c4e68cdca04> in <module>
     22         final.to_excel(f)
     23     elif len(dfs)== 2:
---> 24         df1 = pd.read_excel(dfs, skiprows= range(0,0), usecols= ('R'))
     25         result = df1.transpose()
     26         noiV = np.array([result])
  

ниже приведен код, который я использую:

 import os
import pandas as pd
import glob

path = ('/home/keven/sept2020aka/testing1/md/')
dfs = pd.DataFrame()

#fileswb =  os.listdir(path)
fileswb = glob.glob('/home/keven/sept2020aka/testing1/md/*.xlsx')
for f in fileswb:
    dfs = pd.read_excel(f)
    if len(dfs)== 0:
        print("there are no properties")
    elif len(dfs)== 1:
        df1 = pd.read_excel(dfs, skiprows= range(0,0), usecols= ('R'))
        result = df1.transpose()
        noiV = np.array([result])
        onesV = np.ones((7,1))
        NOIV = (noiV*onesV).astype(int)
        np.random.seed(123)
        R0 = sp.random.uniform(1.000,1.045, size=(7,1))
        noi = (NOIV*R0).astype(int)
        noia = noi.reshape(7,1)
        noib = pd.DataFrame(data=noia)
        final = pd.concat([dfs,noib], axis=1)
        final.to_excel(f)
    elif len(dfs)== 2:
        df1 = pd.read_excel(dfs, skiprows= range(0,0), usecols= ('R'))
        result = df1.transpose()
        noiV = np.array([result])
        onesV = np.ones((7,2))
        NOIV = (noiV*onesV).astype(int)
        np.random.seed(123)
        R0 = sp.random.uniform(1.000,1.045, size=(7,2))
        noi = (NOIV*R0).astype(int)
        noia = noi.reshape(7,2)
        noib = pd.DataFrame(data=noia)
        final = pd.concat([dfs,noib], axis=1)
        final.to_excel(f)
    elif len(dfs)== 3:
        df1 = pd.read_excel(dfs, skiprows= range(0,0), usecols= ('R'))
        result = df1.transpose()
        noiV = np.array([result])
        onesV = np.ones((7,3))
        NOIV = (noiV*onesV).astype(int)
        np.random.seed(123)
        R0 = sp.random.uniform(1.000,1.045, size=(7,3))
        noi = (NOIV*R0).astype(int)
        noia = noi.reshape(7,3)
        noib = pd.DataFrame(data=noia)
        final = pd.concat([dfs,noib], axis=1)
        final.to_excel(f)
    
    elif len(dfs)== 4:
        df1 = pd.read_excel(dfs, skiprows= range(0,0), usecols= ('R'))
        result = df1.transpose()
        noiV = np.array([result])
        onesV = np.ones((7,4))
        NOIV = (noiV*onesV).astype(int)
        np.random.seed(123)
        R0 = sp.random.uniform(1.000,1.045, size=(7,4))
        noi = (NOIV*R0).astype(int)
        noia = noi.reshape(7,4)
        noib = pd.DataFrame(data=noia)
        final = pd.concat([dfs,noib], axis=1)
        final.to_excel(f)
    
    elif len(dfs)== 5:
        df1 = pd.read_excel(dfs, skiprows= range(0,0), usecols= ('R'))
        result = df1.transpose()
        noiV = np.array([result])
        onesV = np.ones((7,5))
        NOIV = (noiV*onesV).astype(int)
        np.random.seed(123)
        R0 = sp.random.uniform(1.000,1.045, size=(7,5))
        noi = (NOIV*R0).astype(int)
        noia = noi.reshape(7,5)
        noib = pd.DataFrame(data=noia)
        final = pd.concat([dfs,noib], axis=1)
        final.to_excel(f)
    
    else:
        print("there are too many properties")
  

Комментарии:

1. Я не знаком pd.read_excel , но кажется странным, что вы передаете результат одного вызова read_excel в другой. Должно ли это быть df1 = pd.read_excel(f, skiprows= range(0,0), usecols= ('R')) вместо этого? (Я заменил dfs путь к f файлу)

2. измените все эти строки кода: df1 = pd.read_excel(dfs, skiprows= range(0,0), usecols= ('R')) на df1 = dfs.copy() . Также удалите: dfs = pd.DataFrame()

3. Отредактируйте свой вопрос и используйте ` скобки для кодовых выражений, чтобы прояснить вопрос. Попробуйте удвоить пробел после прерывистой строки, чтобы начать его с новой строки, потому что вопрос запутан.

4. Пожалуйста, удалите приветствия. Следует ли удалять «Привет», «спасибо», слоганы и приветствия из сообщений?