这是我目前的职能:
def partnerTransaction(main_df, ptn_code, intent, retail_unique):
if intent == 'Frequency':
return main_df.query('csp_code == @retail_unique & partner_code == @ptn_code')['tx_amount'].count()
elif intent == 'Total_value':
return main_df.query('csp_code == @retail_unique & partner_code == @ptn_code')['tx_amount'].sum()
它所做的是接受一个Pandas数据帧(df1)和三个搜索参数。retail_unique是来自另一个数据帧(DF 2)的字符串。目前,我使用itertuples迭代df2的行,调用大约200个这样的函数并写入第三个DF,这只是一个例子。我在DF 2中有大约16000行,所以它非常慢。我要做的是矢量化这个函数。我想它返回一个熊猫系列,有计数每零售额唯一。所以这个系列会是
^{pr2}$然后我将把这个系列映射到第三个DF。在
我有什么办法吗?在
编辑:第一个DF包含基于时间的数据,每个零售店在一列中出现多次,而tx_金额在另一列中出现,如下所示
Retail tx_amount
retail_a 50
retail_b 100
retail_a 70
retail_c 20
retail_a 10
第二个DF按零售商安排:
Retail
retail_a
retail_b
retail_c
如果您想要速度,这里有一个使用
bincount
的numpy
解决方案计时
^{pr2}$首先将^{} 与left join一起使用。在
然后按列} 进行^{} ,并通过^{} 函数^{} 和{a6}聚合在一起或分别在第二个解中。在
tx_amount
对^{将} :
Series
转换为2列DataFrame
的最后一个^{如果需要同时输出:
但如果需要使用条件:
^{pr2}$相关问题 更多 >
编程相关推荐