簡體   English   中英

特定年份的 Pandas 數據框總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM