【发布时间】:2021-09-21 12:34:34
【问题描述】:
我有一个包含两列的表:日期(01-01-2010 到 31-08-2021),值(毫米) 我想只获取2020年的数据。有什么功能或类似的功能可以获取特定时期的一些数据吗?
例如创建一个枢轴。
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python extract sample timetable
我有一个包含两列的表:日期(01-01-2010 到 31-08-2021),值(毫米) 我想只获取2020年的数据。有什么功能或类似的功能可以获取特定时期的一些数据吗?
例如创建一个枢轴。
【问题讨论】:
标签: python extract sample timetable
试试这个:
df = pd.DataFrame(
{'date':['27-02-2010','31-1-2020','31-1-2021','02-1-2020','13-2-2020',
'07-2-2019','30-4-2018','04-8-2020','06-4-2013','21-6-2020'],
'value':['foo','bar','lorem','ipsum','alpha','omega','big','small','salt','pepper']})
df[pd.to_datetime(df['date']).dt.year == 2020]
输出:
date value
1 31-1-2020 bar
3 02-1-2020 ipsum
4 13-2-2020 alpha
7 04-8-2020 small
9 21-6-2020 pepper
或者对于任何范围的搜索,你可以使用这个:
df['date'] = pd.to_datetime(df['date'])
df[(df['date']>pd.Timestamp(2020,1,1)) & (df['date']<pd.Timestamp(2020,12,31))]
【讨论】:
这是一个关于如何使用字符串切片从基于年份的数据集中返回值的示例!如果这与您的情况无关,我需要您使用特定的代码示例来编辑您的帖子!
import pandas as pd
df = pd.DataFrame(
{'date':['27-02-2010','31-1-2020','31-1-2021','02-1-2020','13-2-2020','07-2-2019','30-4-2018','04-8-2020','06-4-2013','21-6-2020'],'value':['foo','bar','lorem','ipsum','alpha','omega','big','small','salt','pepper']})
for row in df.iterrows():
if row[1]['date'][-4::1] == '2020':
print (row[1]['value'])
这将只返回来自日期为 2020 年的数据框中的值
【讨论】:
Pandas 有大量的time series features 供您使用,但对于更简单的方法,您可以将date 列定义为索引,然后对数据进行切片(假设表已按日期排序):
import pandas as pd
df = pd.DataFrame({'date': ['31-12-2019', '01-01-2020', '01-07-2020',
'31-12-2020', '01-01-2021'],
'value': [1, 2, 3, 4, 5]})
df.index = df.date
df.loc['01-01-2020':'31-12-2020']
date value
date
01-01-2020 01-01-2020 2
01-07-2020 01-07-2020 3
31-12-2020 31-12-2020 4
【讨论】: