使用apply方法(pandas)填充数据框中的列和行中的矩阵

时间:2018-05-07 22:42:20

标签: python string pandas dataframe

所以我创建了一个使用两个变量的函数,但是我想在数据帧上使用一个方法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
  

块引用

2 个答案:

答案 0 :(得分:1)

假设您从行和列的列表开始,并且两者都包含字符串,只包含字符串:

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

答案 1 :(得分:1)

然后使用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