заполнить матрицу из столбца и строки во фрейме данных, используя метод apply (pandas) - PullRequest
0 голосов
/ 08 мая 2018

Итак, я создал функцию, которая использует две переменные, но я хочу использовать метод apply для фрейма данных, чтобы функция использовала каждое значение из строки и столбца для создания новой таблицы. Таким образом, выходные данные выглядят примерно так. Кстати, я довольно новичок в Python. Я искал, но ничего не нашел.

  Input:
   a b c d e f g 
a
b
c
d
e

выход

   a  b  c  d  e  f  g 
a  aa ab ac ad ae af ag 
b  ba bb bc bd be bf bg
c  ca cb cc cd ce cf cg
d  da db dc dd de df dg
e  ea eb ec ed ee ef eg

Blockquote

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Создайте фрейм данных, используя apply

pd.DataFrame(columns=list('abcdefg'),index=list('abcdefg')).apply(lambda x : x.name+x.index)
Out[713]: 
    a   b   c   d   e   f   g
a  aa  ba  ca  da  ea  fa  ga
b  ab  bb  cb  db  eb  fb  gb
c  ac  bc  cc  dc  ec  fc  gc
d  ad  bd  cd  dd  ed  fd  gd
e  ae  be  ce  de  ee  fe  ge
f  af  bf  cf  df  ef  ff  gf
g  ag  bg  cg  dg  eg  fg  gg
0 голосов
/ 08 мая 2018

Допустим, вы начинаете со списков строк и столбцов, и оба содержат строки и ничего, кроме строк:

from itertools import product
import numpy as np
import pandas as pd

columns = list("abcdefg")
rows = list("abcde")

Возьмите декартовы произведения из списков, объедините элементы в каждой паре и преобразуйте список в массив NumPy:

products = np.array([''.join(x) for x in product(rows, columns)])

Измените список в прямоугольную таблицу, добавьте заголовки строк и столбцов:

pd.DataFrame(products.reshape(-1, len(columns)), index=rows, columns=columns)
#    a   b   c   d   e   f   g
#a  aa  ab  ac  ad  ae  af  ag
#b  ba  bb  bc  bd  be  bf  bg
#c  ca  cb  cc  cd  ce  cf  cg
#d  da  db  dc  dd  de  df  dg
#e  ea  eb  ec  ed  ee  ef  eg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...