如何根据 Pandas 中的日期过滤 DataFrame 行?
按日期过滤 DataFrame 行会根据包含日期数据的列选择满足指定日期约束的所有行。例如,选择 2020 年 3 月 13 日和 2020 年 12 月 31 日之间的所有行,将返回日期值在该范围内的所有行。
使用 DataFrame.loc() 和索引语法 [condition] 仅从 DataFrame 中选择满足条件的行。定义条件以检查 DataFrame 中的日期列是否在约束范围内。它将为所有行创建一个布尔数组。只有具有真值的行才会被打印。
请参阅以下示例。从这里下载数据框。
方法:
- 将数据列转换为Python支持的日期格式
- 根据日期过滤行
- 使用 .loc()函数访问行并将它们存储在数据帧中。
示例 1:
Python3
# import pandas library
import pandas as pd
# load csv file
df = pd.read_csv(
"C:\\Users\\Rohan\\OneDrive\\Desktop\\GFG\\netflix_titles.csv")
# convert date column into date format
df['date_added'] = pd.to_datetime(df['date_added'])
# filter rows on the basis of date
newdf = (df['date_added'] > '01-03-2020') & (df['date_added'] <= '31-12-2020')
# locate rows and access them using .loc() function
newdf = df.loc[newdf]
# print dataframe
print(newdf)
Python3
# import pandas library
import pandas as pd
# load csv file
df = pd.read_csv(
"C:\\Users\\Rohan\\OneDrive\\Desktop\\GFG\\netflix_titles.csv")
# convert date column into date format
df['date_added'] = pd.to_datetime(df['date_added'])
# filter rows on the basis of date
newdf = (df['date_added'] > '01-01-2019') & (df['date_added'] <= '31-12-2019')
# locate rows and access them using .loc() function
newdf = df.loc[newdf]
# print dataframe
print(newdf)
输出:
2020 年 3 月 13 日至 2020 年 12 月 31 日之间的所有电影都将被打印。
示例 2:
蟒蛇3
# import pandas library
import pandas as pd
# load csv file
df = pd.read_csv(
"C:\\Users\\Rohan\\OneDrive\\Desktop\\GFG\\netflix_titles.csv")
# convert date column into date format
df['date_added'] = pd.to_datetime(df['date_added'])
# filter rows on the basis of date
newdf = (df['date_added'] > '01-01-2019') & (df['date_added'] <= '31-12-2019')
# locate rows and access them using .loc() function
newdf = df.loc[newdf]
# print dataframe
print(newdf)
输出:
上面的输出打印了 2019 年在 Netflix 上添加的所有电影。