python - 按索引上的函数过滤 pandas 数据框

标签 python pandas dataframe

我有一个数据框,其中的日期用作索引,我想提取给定月份(例如一月)的所有行。例如给定

Date         Col1 
2000-01-01    1   
...
2000-12-31    12   
2001-01-01    1   
...
2001-12-31    12   
2002-01-01    1   
...
2002-12-31    12   

然后就可以了

f = df.index.map(lambda x: x.month==1)
new_df = df[f]

是否有更简单的方法来获取 new_df?

我本来希望能够做类似 df.loc[lambda x: x.month==1] 的事情但这不起作用,因为 x实际上是df (这是反直觉的,因为 .loc 期望所有其他形式的 .loc 调用中的实际标签,所以我会认为 x 将是索引的每个标签)。或df.filter(lambda x: x.month==1)但是filter不接受回调。

最佳答案

您可以使用pandas.DatetimeIndex.month with loc 返回条件匹配的索引

df.loc[df.index.month==1]
#df[df.index.month==1]

            Col1
Date            
2000-01-01   1.0
2001-01-01   1.0
2002-01-01   1.0

关于python - 按索引上的函数过滤 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57423453/

相关文章:

python导入嵌套类速记

python - 使用 PyInstaller 2.1 和 MEIPASS 错误捆绑数据文件 --onefile

python - Django:如何将url中捕获的参数传递给额外参数?

r - 两个数据帧之间的传输因子属性

python - 在简单的 DataFrame 中接收 'error multiple values for index'

python - 从 pandas 数据框中获取多个最小和最大日期

python - Visual Studio Code 将不会加载 tkinter 包

python-2.7 - Python Pandas 将列中的子字符串替换为另一列中的子字符串

python - 如何将 pandas 数据帧的状态导入到第二个 .py 文件

python - 使用定界符从列表中提取数据