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