我有一个包含月份和年份列的数据框。两者都包含字符串,即“Septer”和“2013”。如何在一行中选择2013年9月到2008年5月之间的所有行?你知道吗
df1 = stats_month_census_2[(stats_month_census_2['year'] <= '2013')
& (stats_month_census_2['year'] >= '2008')]
df2 = df1[...]
在上面的代码之后,我本打算再做一次同样的事情,但是我很难想出一个聪明的代码来简单地去除时间高于2013年9月(“10月到12月”)和低于2008年5月的行。我可以很容易地硬编码,但必须有一个更python的方式来做这件事。。。你知道吗
如果您在“选择2013年9月至2008年5月期间的所有行”帖子中要求查找2008年至2013年期间的行,也可以在下面进行尝试 然后使用pandas.Series.between:
数据集借用自@jezrael。。你知道吗
用于演示的数据帧:
使用
pandas.Series.between()
如果只是
datetime
格式的问题,您可以在下面尝试:使用DataFame.query查询:
使用isin方法:选择两个日期之间的行
或者,你也可以像下面这样通过。。你知道吗
使用基于索引开始和结束日期的切片方法。。你知道吗
注意:为了满足@jezrael在评论中提出的好奇心,我添加了如何将
year
列转换为datetime格式:因为我们有下面的示例DataFrame,其中有两个不同的列
year
和month
,其中year列只有years,month列是文本字符串格式,所以首先我们需要将字符串转换为int形式join,或者通过使用pandaspd.to_datetime
方法将day指定为1将year&month添加到一起。你知道吗上面是datetime转换之前的原始数据帧,因此,我将采用下面的方法,这是我在vi-So期间学习到的。你知道吗
1-首先将
month
名称转换为int形式,并将其分配给一个名为Month
的新列,这样我们以后就可以使用它进行转换了。你知道吗第二,或者最后直接把年份列转换成一个适当的
datetime
格式,直接分配给year
列本身,我们可以说这是一种就地的。你知道吗您可以使用pd.to_datetime轻松地将这些列转换为DateTime列
您可以创建} 选择:
DatetimeIndex
,然后按^{或者创建列并将^{} 与^{} 一起使用:
不幸的是,对于select between years,这种使用datetime列的方法是不可能的,因此需要使用
pygo
列的year
解决方案:相关问题 更多 >
编程相关推荐