如何从熊猫数据框列中选择日期间隔? [复制]

Posted

技术标签:

【中文标题】如何从熊猫数据框列中选择日期间隔? [复制]【英文标题】:How to choose date interval from pandas dataframe column? [duplicate] 【发布时间】:2018-11-09 14:57:49 【问题描述】:

如何根据现有数据帧的日期间隔创建新数据帧:

df=pd.DataFrame([["01.01.18",32],
    ["01.01.18",8],
    ["01.01.18",12],
    ["01.01.18",77],
    ["02.01.18",99],
    ["03.01.18",78],
    ["04.01.18",89],
    ["02.02.18",85],
    ["10.03.18",35],
    ["13.04.18",81],
    ["03.02.18",97],
    ["29.03.18",90],
    ["08.04.18",7]],columns=["date","payment"])

如何创建日期值在 01.01.18 和 31.01.18 之间的数据框,所以新的 df 看起来像:

Date Payment 
01.01.18,   32
01.01.18,   8
01.01.18,   12
01.01.18,   77
02.01.18,   99
03.01.18,   78
04.01.18,   89

【问题讨论】:

对于现有数据框中不存在的日期,您希望 payment 做什么?如果您可以显示预期输出的示例,这可能会有所帮助。 @jpp 更新了问题 df[(df.date >= "01.01.18") & (df.date <= "31.01.18")]? 您可以查看标记的副本。注意.ix已经被贬值了,所以使用.loc @jpp 好吧,该问题中的每个答案都有 .ix 解决方案(因为它已被贬值,所以很混乱),可能值得像这样更新问题或创建另一个问题。 【参考方案1】:

你需要:

df.set_index(pd.to_datetime(df['date'])).loc['2018-01-01':'2018-01-31'].reset_index(drop=True)

输出:

        date    payment
0   01.01.18    32
1   01.01.18    8
2   01.01.18    12
3   01.01.18    77

您可以继续使用原始日期格式以及以下代码并获得相同的输出:

import datetime as dt
start = dt.datetime.strptime('01.01.18', '%d.%m.%y').strftime('%Y-%m-%d')
end = dt.datetime.strptime('31.01.18', '%d.%m.%y').strftime('%Y-%m-%d')
df.set_index(pd.to_datetime(df['date'])).loc[start:end].reset_index(drop=True)

【讨论】:

谢谢,为什么输出没有 02.01.18、03.01.18、04.01.18 日期的值? @user40 那是因为pd.to_datetime() 那么我该如何包含这些值呢?它们在 '2018-01-01':'2018-01-31' 范围内 @user40,好点子。查看编辑。 什么是 dt ?谢谢

以上是关于如何从熊猫数据框列中选择日期间隔? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用Swift语言自动在日期选择器中选择日期

SQL Server 2008 仅从字段中选择日期 [重复]

Selenium:从日历中选择日期

在日期选择器中选择日期后如何打开时间选择器

即使从日历中选择日期,如何保持 mat-datepicker 日历打开?

Ember JS从日期选择器中选择日期时,更改按钮组件的颜色和标题