使用 str.startswith 访问数据帧切片

Using str.startswith to access a dataframe slice

我有一个包含多年来温度值的数据框,我想做的是将 2015 年的所有行放入一个新的数据框中。目前,日期列是一个对象类型,str 格式如下所示:YYYY-MM-DD

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

df = pd.read_csv("C:\whatever\weather.csv")

weather_2015 = df.loc[df.Date == df.Date.str.startswith("2015"), :]
weather_2015.head()

this is what the data looks like in the main data frame

注意:如果我做类似

的事情
weather_2015 = df.loc[df.Date == "2015-02-03", :]
weather_2015.head()

我得到了我所期望的,只有与 2015-02-03 匹配的日期

pd.Series.str.startswith returns 一个布尔掩码,您不需要再将它与 df.Date 进行比较。你可以直接用它索引:

weather_2015 = df[df.Date.str.startswith("2015")]

这里甚至不需要 .loc

请注意,如果您想在此切片上进行更改,您可能更喜欢副本,在这种情况下,您应该调用 df.copy:

weather_2015 = df[df.Date.str.startswith("2015")].copy()