我有這個資料框:
Name Date author Apple 2022-03-15 sahil_1 Orange 2022-03-16 sahil_2 Apple 2022-03-17 sahil_3 Orange 2022-03-18 sahil_1 Apple 2022-03-19 sahil_2 Banana 2022-03-20 sahil_3 Apple 2019-12-19 sahil_3 Orange 2004-01-07 sahil_1
我想按名稱和日期(每周)聚合它以獲取記錄計數。
日期:分組,結果應該是在一周的開始(或者只是在星期一)
計數:添加,如果兩個或多個記錄具有相同的名稱并且屬于同一周日期時間(如果屬于同一間隔,每周 7 天)
所需的輸出如下所示:
Name Date count Apple 2019-12-16 1 Apple 2022-03-14 3 Banana 2022-03-14 1 Orange 2004-01-05 1 Orange 2022-03-14 2
注意 - 結果中的所有日期都是星期一或說一周的第一天。
如果可能,結果應按 asc(遞增)順序和日期排序,也適用于每個名稱。
提前致謝。
不知道如何進一步進行。
uj5u.com熱心網友回復:
import pandas as pd
Name = ["Apple", "Orange", "Apple", "Orange", "Apple", "Banana", "Apple","Orange"]
Date = ["2022-03-15","2022-03-16","2022-03-17","2022-03-18","2022-03-19","2022-03-20","2019-12-19","2004-01-07"]
author = ["sahil_1","sahil_2","sahil_3","sahil_1","sahil_2","sahil_3","sahil_3","sahil_1"]
df = pd.DataFrame(zip(Name,Date,author), columns=["Name", "Date", "Author"])
df['Date'] = pd.to_datetime(df['Date']) - pd.to_timedelta(7, unit='d')
x = df.groupby(['Name', pd.Grouper(key='Date', freq='W-MON')])['Name'].count()
print(x)
uj5u.com熱心網友回復:
感謝@Pedrinho 的快速幫助。我稍微修改了代碼并得到了我想要的結果。但不確定它是否是正確的做法。
解決方案代碼 -
import pandas as pd
Name = ["Apple", "Orange", "Apple", "Orange", "Apple", "Banana", "Apple","Orange"]
Date = ["2022-03-15","2022-03-16","2022-03-17","2022-03-18","2022-03-19","2022-03-20","2019-12-19","2004-01-07"]
author = ["sahil_1","sahil_2","sahil_3","sahil_1","sahil_2","sahil_3","sahil_3","sahil_1"]
df = pd.DataFrame(zip(Name,Date,author), columns=["Name", "Date", "Author"])
df['Date'] = pd.to_datetime(df['Date']) - pd.to_timedelta(7, unit='d')
df = df.groupby(['Name', pd.Grouper(key='Date', freq='W-MON')])#['Name'].count()
result = []
for group_id, group_df in df:
res = {}
res['Name'] = group_id[0]
res['Week'] = str(group_id[1])[:-9]
res['count'] = group_df['Name'].count()
result.append(res)
print(f"Result df is: {result}")
控制臺 o/p -
Result df is: [{'Name': 'Apple', 'Week': '2019-12-16', 'count': 1}, {'Name': 'Apple', 'Week': '2022-03-14', 'count': 3}, {'Name': 'Banana', 'Week': '2022-03-14', 'count': 1}, {'Name': 'Orange', 'Week': '2004-01-05', 'count': 1}, {'Name': 'Orange', 'Week': '2022-03-14', 'count': 2}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448532.html
標籤:Python 熊猫 日期 通过...分组 熊猫-groupby
上一篇:如何根據新變數的日期將現有的有日期限制的資料行拼接成兩個新行?
下一篇:按最近的時間順序列印回圈的結果
