{
  "id": 77884,
  "title": "How frequently a customer is purchasing  ?",
  "url": "/competitions/elo-merchant-category-recommendation/discussion/77884",
  "author_name": "",
  "post_date": "2019-01-17T09:40:54.350111900Z",
  "votes": null,
  "comment_count": 2,
  "views": 0,
  "content": "<p>I have been trying to calculate the frequency of purchase for each customer but failed..Does anyone performed it in any easy way ?</p>",
  "messages": [
    {
      "id": "457369",
      "postDate": "01/17/2019 09:40:54",
      "content": "<p>I have been trying to calculate the frequency of purchase for each customer but failed..Does anyone performed it in any easy way ?</p>",
      "rawMarkdown": "I have been trying to calculate the frequency of purchase for each customer but failed..Does anyone performed it in any easy way ?",
      "votes": null
    },
    {
      "id": "457531",
      "postDate": "01/17/2019 16:29:02",
      "content": "<p>~~~~\n    df = historical_df[['card_id', 'purchase_date']]\n    df.sort_values(['card_id', 'purchase_date'], inplace=True) \n    df['purchase_freq_mean'] = df.groupby(['card_id'])['purchase_date'].agg(['diff']).fillna(0).astype('timedelta64[m]')\n    df = df.groupby(['card_id'])['purchase_freq_mean'].agg(['mean'])\\\n                                .reset_index().rename(columns={'mean': 'purchase_freq_mean'})\n    train = train.merge(df, on=['card_id'], how='left').fillna(0)\n~~~~\nmore or less such approach</p>",
      "rawMarkdown": "~~~~\n    df = historical_df[['card_id', 'purchase_date']]\n    df.sort_values(['card_id', 'purchase_date'], inplace=True) \n    df['purchase_freq_mean'] = df.groupby(['card_id'])['purchase_date'].agg(['diff']).fillna(0).astype('timedelta64[m]')\n    df = df.groupby(['card_id'])['purchase_freq_mean'].agg(['mean'])\\\n                                .reset_index().rename(columns={'mean': 'purchase_freq_mean'})\n    train = train.merge(df, on=['card_id'], how='left').fillna(0)\n~~~~\nmore or less such approach",
      "votes": null
    },
    {
      "id": "457779",
      "postDate": "01/18/2019 04:52:26",
      "content": "<p>Thanks...Used your code ,but it did't work for me ..I have tried the similar approach in R .. Gave me the results .</p>\n\n<p>df &lt;- hist_trnx1 %&gt;%\n  group_by(card_id) %&gt;%\n  arrange(purchase_date) %&gt;%\n  mutate(diff = purchase_date - lag(purchase_date, default = first(purchase_date))) %&gt;%\n  mutate(diff = round(diff/86400, digits = 2))</p>",
      "rawMarkdown": "Thanks...Used your code ,but it did't work for me ..I have tried the similar approach in R .. Gave me the results .\n\ndf &lt;- hist_trnx1 %&gt;%\n  group_by(card_id) %&gt;%\n  arrange(purchase_date) %&gt;%\n  mutate(diff = purchase_date - lag(purchase_date, default = first(purchase_date))) %&gt;%\n  mutate(diff = round(diff/86400, digits = 2))",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 457531,
      "author_name": "kyakovlev",
      "author_url": "",
      "post_date": "01/17/2019 16:29:02",
      "content": "<p>~~~~\n    df = historical_df[['card_id', 'purchase_date']]\n    df.sort_values(['card_id', 'purchase_date'], inplace=True) \n    df['purchase_freq_mean'] = df.groupby(['card_id'])['purchase_date'].agg(['diff']).fillna(0).astype('timedelta64[m]')\n    df = df.groupby(['card_id'])['purchase_freq_mean'].agg(['mean'])\\\n                                .reset_index().rename(columns={'mean': 'purchase_freq_mean'})\n    train = train.merge(df, on=['card_id'], how='left').fillna(0)\n~~~~\nmore or less such approach</p>",
      "votes": null,
      "replies": [
        {
          "id": 457779,
          "author_name": "leninsolver",
          "author_url": "",
          "post_date": "01/18/2019 04:52:26",
          "content": "<p>Thanks...Used your code ,but it did't work for me ..I have tried the similar approach in R .. Gave me the results .</p>\n\n<p>df &lt;- hist_trnx1 %&gt;%\n  group_by(card_id) %&gt;%\n  arrange(purchase_date) %&gt;%\n  mutate(diff = purchase_date - lag(purchase_date, default = first(purchase_date))) %&gt;%\n  mutate(diff = round(diff/86400, digits = 2))</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "457369": "I have been trying to calculate the frequency of purchase for each customer but failed..Does anyone performed it in any easy way ?",
    "457531": "~~~~\n    df = historical_df[['card_id', 'purchase_date']]\n    df.sort_values(['card_id', 'purchase_date'], inplace=True) \n    df['purchase_freq_mean'] = df.groupby(['card_id'])['purchase_date'].agg(['diff']).fillna(0).astype('timedelta64[m]')\n    df = df.groupby(['card_id'])['purchase_freq_mean'].agg(['mean'])\\\n                                .reset_index().rename(columns={'mean': 'purchase_freq_mean'})\n    train = train.merge(df, on=['card_id'], how='left').fillna(0)\n~~~~\nmore or less such approach",
    "457779": "Thanks...Used your code ,but it did't work for me ..I have tried the similar approach in R .. Gave me the results .\n\ndf &lt;- hist_trnx1 %&gt;%\n  group_by(card_id) %&gt;%\n  arrange(purchase_date) %&gt;%\n  mutate(diff = purchase_date - lag(purchase_date, default = first(purchase_date))) %&gt;%\n  mutate(diff = round(diff/86400, digits = 2))"
  },
  "source": "meta"
}