【发布时间】:2017-06-30 14:42:53
【问题描述】:
这是我目前的功能:
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 DataFrame (DF 1) 和三个搜索参数。 Retail_unique 是来自另一个数据帧 (DF 2) 的字符串。目前,我使用 itertuples 遍历 DF 2 的行并调用大约 200 个这样的函数并写入第三个 DF,这只是一个示例。我在 DF 2 中有大约 16000 行,所以它非常慢。我想要做的是矢量化这个函数。我希望它返回一个熊猫系列,其中每个零售唯一的 tx_amount 计数。所以这个系列将是
34 # retail a
54 # retail b
23 # retail c
然后我会将这个系列映射到第三个 DF。
有什么想法可以解决这个问题吗?
编辑:第一个 DF 包含基于时间的数据,每个零售在一个列中出现多次,而 tx_amount 在另一列中出现,就像这样
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
【问题讨论】:
标签: python database pandas dataframe vectorization