gpt4 book ai didi

python - Pandas TimeGrouper 按列

转载 作者:行者123 更新时间:2023-12-01 03:30:25 27 4
gpt4 key购买 nike

我有一个 csv 文件,其中日期作为列标题,二进制矩阵为 1、0 或 np.nan

我想取每个指数的平均值,按月分组。我遇到了问题,因为我的列不是日期时间索引,我尝试使用 pd.to_datetime() 转换为日期时间索引,但没有成功。

二进制.csv:

2016-01-01 00:00:00,2016-01-02 00:00:00,2016-02-01 00:00:00,2016-02-02 00:00:00
1,,0,1
0,1,,1

我的代码:

import pandas as pd
import numpy as np

df = pd.read_csv('binary.csv')
df.columns = pd.to_datetime(df.columns, format='%Y-%m-%d %H:%M:%S')
df = df.groupby(pd.TimeGrouper(freq='M'), axis=0)
print df

错误:

TypeError: axis must be a DatetimeIndex, but got an instance of 'Int64Index'

期望的输出:

   2016-01-01 00:00:00  2016-02-01 00:00:00
0 1.0 0.5
1 0.5 1.0

更新的问题:

基于最佳答案:

如果我想每个月都有一个值,是否有比这更有效的方法?

pd.DataFrame(data=df.resample('MS', axis=1).mean().mean()).transpose()

最佳答案

默认情况下,pd.TimeGrouper 适用于索引 (axis=0),因此您需要告诉它应该对列进行分组:

df.groupby(pd.TimeGrouper(freq='MS', axis=1), axis=1).mean()
Out:
2016-01-01 2016-02-01
0 1.0 0.5
1 0.5 1.0

您也可以直接使用重新采样:

df.resample('MS', axis=1).mean()
Out:
2016-01-01 2016-02-01
0 1.0 0.5
1 0.5 1.0

关于python - Pandas TimeGrouper 按列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41000880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com