如何从熊猫数据框列中选择日期间隔? [复制]
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 ?谢谢以上是关于如何从熊猫数据框列中选择日期间隔? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2008 仅从字段中选择日期 [重复]