[英]Pandas dataframe Sum for specific years
我剛剛開始使用 Pandas 進行分析工作。
我在 Pandas 中有一個超過 200 萬行的數據框,假設它被稱為 DF。 我需要創建一個變量,向我顯示名為“總記錄”的列的總和,但按年份將其分開,因此可以說,2017 年的一個變量,2018 年的另一個變量和 2019 年的另一個變量。問題是,我的 DATE 列是格式如下:1/20/2018 是否有類似 SQL 語法的內容:
Select Sum("Total Records")
From DF
Where date like '%2018';
?
我曾嘗試使用 df.query('date == 2018')['Total Records'].sum(),但它給了我一個語法錯誤。
假設 DF 看起來像這樣:
Date | Total Records
1-20-2019 | 100
3-12-2018 | 50
5-14-2019 | 100
3-10-2018 | 20
我希望它輸出這樣的變量
TotalRecords2018 = 70;
TotalRecords2019 = 200;
方法 1 :推薦的方法是將“日期”列的類型轉換為日期時間。
就像是
df['Date'] = df['Date'].astype('datetime64')
然后將年份分開並應用匯總“總和”
或者
方法 2 :拆分字符串
如果要保留數據類型,請根據“-”拆分字符串。
df['day', 'month', 'year'] = df.Date.split("-",expand=True)
使用新列 'year' 進行分組和求和。
df.groupby('year")['Total Records'].sum()
你可以試試這個:
e = df
e.Date = (e.Date.apply(lambda x: pd.to_datetime(x, format="%d-%M-%Y"))).dt.strftime('TotalRecords%Y')
e.groupby('Date')['Total Records'].sum().to_dict()
# {'TotalRecords2018': 70, 'TotalRecords2019': 200}
這是在熊貓中使用 groupby 方法的一個示例。
import pandas as pd
data = [["1-20-2019", 100], ["3-12-2018", 50], ["5-14-2019", 100], ["3-10-2018", 20]]
columns = ["Date", "Total Records"]
df = pd.DataFrame(data, columns=columns)
df['Date'] = pd.to_datetime(df['Date'])
result = df.groupby(df.Date.dt.to_period("Y"))['Total Records'].sum()
for year, records in result.items():
print(f"TotalRecords{year} = {records}")
輸出
TotalRecords2018 = 70
TotalRecords2019 = 200
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.