【问题标题】:Pandas - Select month and yearPandas - 选择月份和年份
【发布时间】:2020-11-12 15:39:39
【问题描述】:

尝试对数据框进行子集化,最终希望将某个月份和年份(比如 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 变量。任何帮助表示赞赏。

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    鉴于您有一个 Date 列,我建议您先转换该列,然后再转换两次。您不能将 .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)]
    
    【解决方案2】:

    先将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)]
    
    

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 2012-02-24
      • 2017-10-13
      相关资源
      最近更新 更多