使用 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()
我有一个包含多年来温度值的数据框,我想做的是将 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()