在日期上应用行逻辑,同时只提取数据框架的多列。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在日期上应用行逻辑,同时只提取数据框架的多列。相关的知识,希望对你有一定的参考价值。

我正在pandas中提取一个数据框架,并希望只提取日期在变量之后的行。

我可以通过多个步骤来实现,但我想知道是否可以在一次调用中应用所有的逻辑来实现最佳实践。

下面是我的代码

        import pandas as pd


        self.min_date = "2020-05-01"

        #Extract DF from URL
        self.df = pd.read_html("https://webgate.ec.europa.eu/rasff-window/portal/index.cfm?event=notificationsList")[0]

        #Here is where the error lies, I want to extract the columns ["Subject","Reference","Date of case"] but where the date is after min_date.
        self.df = self.df.loc[["Date of case" < self.min_date], ["Subject","Reference","Date of case"]]

        return(self.df)

我一直收到这个错误。"IndexError: Boolean index has wrong length: 1 instead of 100 布尔型索引长度错误:1而不是100"

我在网上找不到解决方法,因为每个答案都太针对提问者的场景。

如:这个解决方案只适用于调用一列的情况。如何根据列值从DataFrame中选择行?

我感谢任何帮助。

答案

替换这个。

["Date of case" < self.min_date]

用这个代替。

self.df["Date of case"] < self.min_date

就是说..:

self.df = self.df.loc[self.df["Date of case"] < self.min_date, 
                      ["Subject","Reference","Date of case"]]
另一答案

你有一个轻微的语法问题。请记住,最好的做法是使用 pd.to_datetime 将字符串日期转换为 pandas datetime 对象。

min_date = pd.to_datetime("2020-05-01")

#Extract DF from URL
df = pd.read_html("https://webgate.ec.europa.eu/rasff-window/portal/index.cfm?event=notificationsList")[0]

#Here is where the error lies, I want to extract the columns ["Subject","Reference","Date of case"] but where the date is after min_date.
df['Date of case'] = pd.to_datetime(df['Date of case'])
df = df.loc[df["Date of case"] > min_date, ["Subject","Reference","Date of case"]]

输出。

                                             Subject  Reference Date of case
0  Salmonella enterica ser. Enteritidis (presence...  2020.2145   2020-05-22
1  migration of primary aromatic amines (0.4737 m...  2020.2131   2020-05-22
2  celery undeclared on green juice drink from Ge...  2020.2118   2020-05-22
3  aflatoxins (B1 = 29.4 µg/kg - ppb) in shelled ...  2020.2146   2020-05-22
4  too high content of E 200 - sorbic acid (1772 ...  2020.2125   2020-05-22

以上是关于在日期上应用行逻辑,同时只提取数据框架的多列。的主要内容,如果未能解决你的问题,请参考以下文章

在多列熊猫上应用 lambda 行

C# 多行多列电子邮件阅读器提取器

R:从一个数据帧中提取行,基于列名匹配来自另一个数据帧的值

我可以让 robocopy 日志文件只显示一行摘要和日期吗?而不是多列?谢谢你

如何在我的表中有两行跨越多列,同时仍与引导程序兼容?

PaddlePaddle:在 Serverless 架构上十几行代码实现 OCR 能力