我有一个带有日期对象的熊猫数据框。我想删除某些年份和月份的行,比如说2月。使用Python的方式是什么?
use Illuminate\Support\Facades\Log;
Log::channel('stderr')->info('Something happened!');
似乎输入过多,并留下了NaN值。
df = pd.DataFrame(['2020-01-01','2020-02-02','2020-03-03','2020-04-04'],columns=['dates'])
df['dates'] = pd.to_datetime(df['dates']).dt.date
如果我尝试访问系列中所有对象的属性,则会收到错误消息。
df["dates"] = pd.Series([date for date in df["dates"].values if date.month!=2]
dates
0 2020-01-01
1 2020-03-03
2 2020-04-04
3 NaN
与范围进行比较似乎过于繁琐,而且我不知道如何组合条件。
df = df.drop(df[df.dates.month==2].index)
AttributeError: 'Series' object has no attribute 'month'
答案 0 :(得分:0)
使用dt
访问器,但它要求列的类型为pd.Timestamp
:
df = pd.DataFrame(['2020-01-01','2020-02-02','2020-03-03','2020-04-04'],columns=['dates'])
df['dates'] = pd.to_datetime(df['dates']) # removed the .dt.date
# Remove rows whose month are Feb, Mar or Apr, in 2018 & 2019 only
df[~(df['dates'].dt.month.isin([2,3,4]) & df['dates'].dt.month.isin(2018, 2019))]