首页 > 解决方案 > 使用应用方法(熊猫)从数据框中的一列和一行填充矩阵

问题描述

所以我创建了一个使用两个变量的函数,但我想在数据帧上使用一种方法,因此该函数将使用行和列中的每个值来创建一个新表。所以输出看起来像这样。顺便说一句,我对 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

块引用

标签: pythonstringpandasdataframe

解决方案


假设您从行和列的列表开始,它们都包含字符串,而且只包含字符串:

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

推荐阅读