熊猫-选择月份和年份

时间:2020-11-12 05:19:46

标签: python pandas csv

试图对数据框进行子集化,最终希望将特定的月份和年份(例如2020年11月)导出为CSV。但是我被卡在选择部分,日期列采用DD / MM / YYYY格式。我的尝试-

csv = r"C:\Documents\Transactions.csv"
current_month = 11
current_year = 2020
            
data =pd.read_csv(csv, sep=',', index_col = None)
        
df = data[pd.to_datetime(data['Date'],dayfirst=True).dt.month == current_month &(pd.to_datetime(data['Date']).dt.year==current_year)]
            
print(df)

结果是具有正确年份的行,但包括所有月份,而我希望它限制current_month变量。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

鉴于您有一个“日期”列,因此建议您先将其转换两次,然后再进行转换。您不能将.dt.month应用于“系列”(整个列)。 然后将其应用于系列。

import datetime as dt
data['Date']= pd.to_datetime(data['Date'], dayfirst=True)
df = data[(data['Date'].apply(lambda x: x.month) == current_month) & 
(data['Date'].apply(lambda y: y.year) == current_year)]

答案 1 :(得分:0)

首先将列Date转换为日期格式,然后照常进行选择。

import pandas as pd

df = pd.read_csv('data-date.txt')
current_month = 11
current_year = 2020
    
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df[(df['Date'].dt.month == current_month) & (df['Date'].dt.year == current_year)]