Доступ к pandas DataFrame в al oop для управления индексами - PullRequest
0 голосов
/ 13 июля 2020

У меня есть 5053x5053 Pandas DataFrame, который представляет какие-то отношения между экспортируемыми продуктами, индексы и столбцы - это серийные номера, и они хранятся в массиве numpy. У меня есть еще один массив numpy только с некоторыми из 5053 серийных номеров (они представляют зеленые продукты). Я заинтересован в построении и анализе отношений между продуктами, полученными из значений матрицы, различая между нормальными и зелеными продуктами. В Pandas есть функция для доступа к индексам и столбцам в al oop для «контроля», имею ли я дело с Зеленым продуктом или нет?

products = genfromtxt('products.txt', delimiter='\n') #numpy array 5053,
greens = genfromtxt ('GreenList.txt', delimiter='\n') #numpy array with only green products
p-value = pd.DataFrame(data = p, index = products, columns = products) # DataFrame, p is a 5053x5053 numpy array

1 Ответ

1 голос
/ 13 июля 2020

Обычно Pandas операций для индексации и выбора векторизованы, что означает, что цикл выполняется за вас.

То, что вы хотите сделать, звучит примерно так:

import pandas as pd

# fake data frame indexed by serial number.
x = pd.DataFrame(
  {
    'serial': [1001, 1002, 1003, 1004, 1005, 1006],
    'x': [1, 2, 3, 4, 5, 6],
  })
x.set_index('serial', inplace=True)

green_serials = [1002, 1004, 1006]

# select by index values
x.loc[green_serials]

# output:
#         x
# serial
# 1002    2
# 1004    4
# 1006    6

Возможно, вам может пригодиться логический столбец, указывающий зеленый / не зеленый:

x['green'] = x.index.isin( green_serials )
        x  green
serial
1001    1  False
1002    2   True
1003    3  False
1004    4   True
1005    5  False
1006    6   True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...