【问题标题】:Datetime format update for a range of columns in pandas熊猫中一系列列的日期时间格式更新
【发布时间】:2021-10-26 22:00:08
【问题描述】:

我有一个 pandas 数据框,其中包含 30 多列的子集,每个月的值,命名为“2018-09-01 00:00:00”,我想将其重新格式化为“2018 年 9 月”之类的月-年.

我找到this useful

df.iloc[:, 13:].rename(columns='{:%b %Y}'.format)

但将其应用于整个 df 会破坏这些列中的数据:

df.iloc[:, 13:] = df.iloc[:, 13:].rename(columns='{:%b %Y}'.format)

如何更改通过索引知道的一系列列的格式?

【问题讨论】:

    标签: pandas datetime


    【解决方案1】:

    使用rename:

    old_col_names = df.filter(regex=r'\d{4}-\d{2}').columns.tolist()
    new_col_names = pd.to_datetime(old_col_names).strftime('%b %Y')
    df = df.rename(columns=dict(zip(old_col_names, new_col_names)))
    

    输出:

    # Before rename
    >>> df
       id  2018-09-01 00:00:00  2018-10-01 00:00:00  data
    0   0                    1                    2     3
    
    # After rename
    >>> df
       id  Sep 2018  Oct 2018  data
    0   0         1         2     3
    

    设置:

    data = {'id': [0], '2018-09-01 00:00:00': [1],
            '2018-10-01 00:00:00': [2], 'data': [3]}
    df = pd.DataFrame(data)
    

    【讨论】:

    • 我想知道如何将其转换为日期时间索引?现在列名似乎存储为字符串,不允许将它们切片为日期
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多