Извлечение столбца из фрейма данных, который хранится в списке. Список состоит из нескольких фреймов данных - PullRequest
0 голосов
/ 04 июня 2019

У меня есть список данных, который состоит из нескольких фреймов данных.data [0], data [1] и т. д. покажут фрейм данных 1, фрейм данных 2 и т. д. Все фреймы данных различаются с точки зрения количества строк и атрибутов no.of.Я хотел бы знать, есть ли способ, которым мы можем записать данные [1] [2], чтобы извлечь датафрейм 2 и имя столбца 3.То есть данные [i] [j] представляют (i + 1) -й кадр данных и (j + 1) -й атрибут в (i + 1) -ом кадре данных.

list (data [1] .columns.values) Я понимаю, что приведенный выше код дает мне все атрибуты.Мне интересно знать индексирование с использованием вышеупомянутого способа - data [i] [j].

import os
import pandas as pd
path = os.getcwd()
files = os.listdir(path)
files
files_xlxs = [f for f in files if f[-4:] == 'xlsx']
files_xlxs = [f for f in files_xlxs if '$' not in f]
data = [] 
for f in files_xlxs:
    pathFile = path + '\\' + f
    print(pathFile)
    data.append(pd.read_excel(pathFile))
data[1]     

Data [1] [2] должны извлечь имя третьего столбца из фрейма данных 2.После компиляции возникает следующая ошибка.

KeyError Traceback (последний вызов был последним) D: \ Anaconda \ lib \ site-packages \ pandas \ core \ indexes \ base.py в get_loc (self, key,метод, допуск) 2656 try: -> 2657 return self._engine.get_loc (key) 2658 за исключением KeyError:

pandas / _libs / index.pyx в pandas._libs.index.IndexEngine.get_loc ()

pandas / _libs / index.pyx в pandas._libs.index.IndexEngine.get_loc ()

pandas / _libs / hashtable_class_helper.pxi в pandas._libs.hashtable.PyObjectHashmable.ite (101)*

pandas / _libs / hashtable_class_helper.pxi в pandas._libs.hashtable.PyObjectHashTable.get_item ()

KeyError: 2

Во время обработки вышеуказанного исключения произошло еще одно исключение:

KeyError Traceback (последний последний вызов) в () ----> 1 данных [1] [2]

1 Ответ

0 голосов
/ 04 июня 2019

Панда пытается сказать вам, что вы пытаетесь получить доступ к столбцу с именем 2 во фрейме данных, в котором нет столбца с именем 2.Вы не можете получить доступ к столбцам во фрейме данных так же, как вы получаете доступ к элементам в списке, то есть по индексу.

Однако вы можете извлечь идентификатор столбца из списка данных.столбцы фрейма, а затем используйте его для запроса фрейма данных.Вместо data[1][2] вы можете сделать data[1][data[1].columns[2]].

Вот полный пример со списком с именем data, содержащим два фрейма данных, каждый с двумя столбцами:

import pandas as pd
data = [
    pd.DataFrame({"number": [1, 2, 3], "age": [10, 20, 30]}, columns=["number", "age"]),
    pd.DataFrame({"value": [4, 5, 6], "bananas": [40, 50, 60]}, columns=["value", "bananas"])
]

# Print the content of each data frame
for df in data:
    print df

Это распечатывает два фрейма данных:

   number  age
0       1   10
1       2   20
2       3   30
   value  bananas
0      4       40
1      5       50
2      6       60

Затем мы получаем доступ и печатаем только 2-й столбец каждого фрейма данных в списке, который печатает столбцы age и bananas соответственно:

# Print 2nd column of 1st data frame
print data[0][data[0].columns[1]]

# Print 2nd column of 2nd data frame
print data[1][data[1].columns[1]]

Что дает:

0    10
1    20
2    30
Name: age, dtype: int64
0    40
1    50
2    60
Name: bananas, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...