【发布时间】:2021-03-04 02:35:02
【问题描述】:
我有一个包含两列的 excel 文件:日期和值。
导入数据、指定日期范围并输出该日期范围的值总和的最佳方法是什么?
开始日期 = 23.09.2020
结束日期 = 26.09.2020
期望的输出: 197.03
【问题讨论】:
-
请将示例数据添加到问题中以供将来参考,而不是发布指向外部来源的链接。在某些时候,链接可能会过期。
我有一个包含两列的 excel 文件:日期和值。
导入数据、指定日期范围并输出该日期范围的值总和的最佳方法是什么?
开始日期 = 23.09.2020
结束日期 = 26.09.2020
期望的输出: 197.03
【问题讨论】:
假设您的数据 csv 如下所示: my_data.csv
Date,Value
01-02-2021 00:00:00,75.68
02-02-2021 00:00:00,84.73
03-02-2021 00:00:00,15.25
04-02-2021 00:00:00,20.00
05-02-2021 00:00:00,81.05
和处理它的代码:Python3.6 with pandas==1.1.4
import pandas as pd
from datetime import datetime
df = pd.read_csv('my_data.csv', encoding='utf-8', header=0)
df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y %H:%M:%S')
start_date = datetime.strptime("02.02.2021", "%d.%m.%Y")
end_date = datetime.strptime("03.02.2021", "%d.%m.%Y")
selected_df = df[(df['Date'] >= start_date) & (df['Date'] <= end_date)]
total = selected_df['Value'].sum()
print(selected_df)
print(total)
输出是:
Date Value
1 2021-02-02 84.73
2 2021-02-03 15.25
99.98
【讨论】:
假设数据位于与图像格式相同的 Excel 文件中,包括第 2 行。
import pandas as pd
from datetime import datetime
df = pd.read_excel('table.xlsx', header=0, parse_dates=True)
df.drop(index=0,inplace=True)
df['Date and time'] = pd.to_datetime(df['Date and time'], format='%d.%m.%Y')
StartDate = datetime.strptime('23.09.2021', '%d.%m.%Y')
EndDate = datetime.strptime('26.09.2021', '%d.%m.%Y')
total_kWh = df[(df['Date and time']>=StartDate) & (df['Date and time']<=EndDate)]['Total system'].sum()
print(total_kWh)
【讨论】: