Прочтите строки Excel, используя Pandas как модуль Xlrd - PullRequest
0 голосов
/ 28 мая 2020

В этом примере я показываю 2 способа чтения файла Excel и печати данных. Вместо использования обоих способов я хочу использовать модуль pandas для вывода данных, как я это делал с модулем xlrd. Я хочу l oop через столбец / строки и добавить его в массивы (Col_B3, Col_C3, Col_D3) Как я могу это сделать?

import xlrd
import pandas as pd
import io

path = r'C:\Temp Files\My_Excel_File.xlsx'

''' USING XLRD '''
#open workbook
inputWorkbook = xlrd.open_workbook(path)
#open first sheet
Sheet = inputWorkbook.sheet_by_index(0)

Col_B3 = []
Col_C3 = []
Col_D3 = []

for row in range(2 ,Sheet.nrows):
    Col_B3.append(Sheet.cell_value(row, 1))
    Col_C3.append(Sheet.cell_value(row, 2))
    Col_D3.append(Sheet.cell_value(row, 3))

print(Col_B3)    
print(Col_C3)
print(Col_D3)


''' USING PANDAS '''
df = pd.read_excel(path)

print(df)

ВЫХОД XLRD

['Col_B3', 1.0, 2.0, 3.0, 4.0]
['Col_C3', 'Jack', 'Jill', 'Peter', 'Jade']
['Col_D3', 1200.0, 875.0, 120.0, 4230.0]

PANDAS ВЫХОД

   Unnamed: 0 Unnamed: 1 Unnamed: 2 Unnamed: 3
0         NaN        NaN        NaN        NaN
1         NaN     Col_B3     Col_C3     Col_D3
2         NaN          1       Jack       1200
3         NaN          2       Jill        875
4         NaN          3      Peter        120
5         NaN          4       Jade       4230

The Excel File

Ответы [ 2 ]

1 голос
/ 28 мая 2020

С XLRD у вас было больше контроля над обработкой данных при их чтении. Pandas считывает ваши данные как есть; Ваш первый столбец пуст, как и первая строка. Ваши данные также находятся в формате столбца, поэтому Pandas прочитайте их по столбцам. Вы можете преобразовать его в форму списка с помощью Pandas:

res = (df.dropna(how='all') #remove completely empty rows
      .dropna(how='all',axis=1) #remove completely empty columns
      .T #flip columns into row position
      #convert to list    
      .to_numpy()
      .tolist()
      )

print(res)

[['Col_B3', '1', '2', '3', '4'],
 ['Col_C3', 'Jack', 'Jill', 'Peter', 'Jade'],
 ['Col_D3', '1200', '875', '120', '4230']]
1 голос
/ 28 мая 2020

Попробуйте, я воссоздал ваши данные в электронной таблице.

import pandas as pd
import numpy as np

df = pd.read_excel(r"C:\Temp Files\My_Excel_File.xlsx")
#drop column name
df=df.drop(["Unnamed: 0"],axis=1)
#drop na
df=df.dropna(axis=0)

# remove all non-integer values
df = df[df.applymap(np.isreal).any(1)]

#Map column names

df.columns = ["Col_B3","Col_C3","Col_D3"]

#print results
print(df)

Col_B3 Col_C3 Col_D3
2      1   Jack   1200
3      2   Jill    875
4      3  Peter    120
5      4   Jade   4320
...