首页 > 解决方案 > 如何按月分隔此数据框列?

问题描述

我的数据框的几行

第三列显示了我的数据完成的时间。理想情况下,我希望第二行只显示日期,删除后半部分元素,但我不确定如何更改元素。我能够将(第二)列字符串更改为没有磅符号的浮点列,以便找到成本总和。但是,此列没有特定的关键字,我只是为所有要删除的元素选择。

我的问题的第二部分是是否可以轻松创建另一个包含 2021-05-xx 或 2021-06-xx 的数据框。我知道有一种方法可以让另一个数据框选择某些行,例如前 15 或后 7 行。但我不知道是否有办法让数据框找到我提到的内容。我认为它遵循 Series.str.contains(),但似乎当我将“2021-05”放入 () 时,它显示了 False 的整个数据框。

标签: pythonpandas

解决方案


可以通过更改列的格式来仅提取日期并忽略 datetime 列中的时间。

df['date'] = pd.to_datetime(df['date']).dt.date

对于关于创建新数据框的问题的第二部分,该数据框被过滤为仅包含 2021-05-xx 和 2021-06-xx 之间的行,我们可以使用 pandas 过滤。

df_filtered = df[(df['date'] >= pd.to_datetime('2021-05-01')) & (df['date'] <= pd.to_datetime('2021-06-30'))]

在这里,我们利用了两件事:1) Pandas 使用数字运算符可以轻松比较不同日期的年表。2) 我们知道任何包含 2021-05-xx 或 2021-06-xx 的日期必须在 5 月的第一天/之后和 6 月的最后一天/之前。

还有一些 GUI 可以很容易地更改列的格式和过滤数据,而无需自己编写代码。我是其中一种工具Mito的创建者。要在 Mito 中过滤日期,您只需使用我们的日历输入字段输入日期,Mito 就会为您生成等效的 pandas 代码!


推荐阅读