我有这个df salesDF
:
+-----------+-------------+----------------+----------------+----------+------------+----------------+---+----------+-------------------+
|customer_id|customer_name| email_address|shipping address|product_id|product_name|product_Category|qty|unit_price| Timestamp|
+-----------+-------------+----------------+----------------+----------+------------+----------------+---+----------+-------------------+
| 301| Jaison|jaison@gmail.com| Bangalore| 402| Laptop| Electronics| 2| 28000|2017-03-10 07:29:00|
| 321| Abji| Abhji@gmail.com| Bangalore| 402| Laptop| Electronics| 2| 28000|2017-03-12 10:29:00|
| 302| Tom| tom@gmail.com| Bangalore| 601| Mobile| Electronics| 1| 20000|2017-03-10 08:29:00|
| 303| Thomas|thomas@gmail.com| Chennai| 402| Laptop| Electronics| 2| 38000|2017-03-10 08:45:00|
| 307| Vijay| vijay@gmail.com| Chennai| 503| TV| Electronics| 1| 42000|2017-03-11 09:45:00|
| 310| Thomas|thomas@gmail.com| Chennai| 503| TV| Electronics| 1| 42000|2017-03-12 09:45:00|
| 308| Menon| menon@gmail.com| Hyderabad| 503| TV| Electronics| 2| 40000|2017-03-13 09:45:00|
+-----------+-------------+----------------+----------------+----------+------------+----------------+---+----------+-------------------+
我想知道每天售出的产品总数。客户每天购买的产品数量不同,因此我们必须计算相同产品的总数量*数量
低于我想要的数字
sale_of_product_in_a_day =sales_df.groupBy(F.substring('Timestamp', 0,10).alias('Per Day'),'product_name').count()
这个结果基本上是
+----------+------------+-----+
| Per Day|product_name|count|
+----------+------------+-----+
|2017-03-12| Laptop| 1|
|2017-03-13| TV| 1|
|2017-03-12| TV| 1|
|2017-03-10| Mobile| 1|
|2017-03-10| Laptop| 2|
|2017-03-11| TV| 1|
+----------+------------+-----+
以上结果基于相同产品的分组,不考虑“数量”列。。所以我需要根据客户在一天内购买的实际产品的数量来计算“数量”?
因此,在这种情况下,日期“2017-03-10”的预期结果应该是“4”,而不是“2”,因为“笔记本电脑”的“数量”是4
预期
|2017-03-10| Laptop| 2| # should be ---> 4
那么如何将一列与Dataframe中的计数结果相乘呢?或者解决这个问题的方法是什么?
如果有人能帮上忙,我将不胜感激。
谢谢
1条答案
按热度按时间afdcj2ne1#
这应该是你的工作解决方案,只是使用
groupBy()
以及sum()
##在这里创建df输入
输出