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