【发布时间】:2023-03-31 23:17:01
【问题描述】:
为了简化我的问题,假设我有两个列表列表和一个如下所示的函数:
OP = [[1,2,3],[6,2,7,4],[4,1],[8,2,6,3,1],[6,2,3,1,5], [3,1],[3,2,5,4]]
AP = [[2,4], [2,3,1]]
def f(listA, listB):
return len(listA+listB) # my real f returns a number as well
我想获得f(OP[i],AP[j]) for each i, j,所以我的想法是创建一个看起来像这样的pandas.Dataframe:
AP[0] AP[1]
OP[0] f(AP[0],OP[0]) f(AP[1],OP[0])
OP[1] f(AP[0],OP[1]) f(AP[1],OP[1])
OP[2] f(AP[0],OP[2]) f(AP[1],OP[2])
OP[3] f(AP[0],OP[3]) f(AP[1],OP[3])
OP[4] f(AP[0],OP[4]) f(AP[1],OP[4])
OP[5] f(AP[0],OP[5]) f(AP[1],OP[5])
OP[6] f(AP[0],OP[6]) f(AP[1],OP[6])
我的真实数据实际上OP中有80000个list,AP有20个list,f这个函数有点费时,所以计算成本应该是担心的。
我实现目标的想法是为每个OP 构造一个长度为len(AP) 的pandas.Series,然后将Series 附加到最后的Dataframe。
例如,对于OP[0],首先创建一个Series,其中包含f(OP[0],AP[i]) for each i 的所有信息。
我被困在构建Series 上。我尝试了pandas.Series.apply() 和map(),但它们都不起作用,因为我的函数f 需要两个参数。
我也愿意接受任何其他获得f(OP[i],AP[j]) for each i, j 的建议,谢谢。
【问题讨论】:
标签: python pandas dataframe series