Получите Specifi c Data из Excel, используя Pandas, и конвертируйте все в строку, а также NaN - PullRequest
0 голосов
/ 30 мая 2020

У меня есть файл Excel, в котором первая строка всегда пуста. Вторая строка с данными, которые мне не нужны. Третья строка всегда является заголовком, а следующие строки всегда являются данными, где Total находится под Title_3 и Title_4.

Я читаю файлы, используя pandas. Я приложил вывод результата.

Моя цель состоит в том, чтобы все в массиве было строкой, а также nan. Как я могу заменить nan строкой и получить такой вывод:

Целевой результат

['nan', 'Title_1', 'RED_100', '2019-01-01 00:00:00', '10', 'nan']
['nan', 'Title_2', 'GREEN_200', '2018-02-02 00:00:00', '20', 'nan']
['nan', 'Title_3', 'RED_300', '2019-11-15 00:00:00', '30', 'Total']
['123456', 'Title_4', 'YELLOW_100', '2019-01-01 00:00:00', '40', '100']

Код

import pandas as pd
import io
import numpy as np

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

df = pd.read_excel(path, dtype=str, index_col=None, na_values=['NA'])

#df.drop(df.head(2).index, inplace=True)

print(df)
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()
Title_1 = res[1]
print(Title_1)

Вывод

            Unnamed: 0           Unnamed: 1           Unnamed: 2           Unnamed: 3
0                  NaN                  NaN                  NaN               123456
1              Title_1              Title_2              Title_3              Title_4
2              RED_100            GREEN_200              RED_300           YELLOW_100
3  2019-01-01 00:00:00  2018-02-02 00:00:00  2019-11-15 00:00:00  2019-01-01 00:00:00
4                   10                   20                   30                   40
5                  NaN                  NaN                Total                  100

[nan, 'Title_2', 'GREEN_200', '2018-02-02 00:00:00', '20', nan]

Мой файл Excel

enter image description here

Данные, которые мне нужны

enter image description here

1 Ответ

1 голос
/ 30 мая 2020
#add skiprows=1, nrows=6
df = pd.read_excel(path, dtype=str, index_col=None, na_values=['NA'], skiprows=1, nrows=6)

#transpose the df
df_transposed = df.T

#transform all entries to strings (including nan)
df_transposed = df_transposed.applymap(str)

Вы уже приложили усилия, чтобы предоставить информацию для вопроса, но было бы действительно полезно, если бы вы также предоставили тестовый фрейм данных, подобный этому: df = pd.DataFrame (data = ... Таким образом, код не протестирован !

...