带有两个不同时间索引的熊猫数据帧操作(除法乘法)

马拉松人4202

尝试将一个具有多年时间索引的数据框中的一列除以第二数据框的列,该数据框按一年中的某天索引。例如,使一个数据框每天建立索引。使用日期按中间值制作第二个数据框。

    import pandas as pd
    import numpy.random as npr 
    rng = pd.date_range('1/1/2010', periods=365*5, freq='D')
    df1 = pd.DataFrame(npr.randn(len(rng)), index=rng)
    df_med = df1.groupby(lambda x: x.dayofyear).median()

我想将df1除以df_med,以便生成一个数据帧,该数据帧的数据被该年那一天的中值标准化。

    df_norm = df1.div(df_med, axis=1)

这行不通,但恐怕我不知道该怎么办。有任何想法吗?

埃德·楚姆

除法不起作用的原因是因为分组的df是不同的形状,所以一种方法是调用,transform以便它返回一个索引,该系列的索引与原始df对齐,然后执行除法:

In [165]:

import numpy.random as npr 
rng = pd.date_range('1/1/2010', periods=365*5, freq='D')
df1 = pd.DataFrame(npr.randn(len(rng)), index=rng)
print(df1.info())
df_med = df1.groupby(lambda x: x.dayofyear).median()
df1.div(df1.groupby(lambda x: x.dayofyear).transform(pd.Series.median))
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 1825 entries, 2010-01-01 to 2014-12-30
Freq: D
Data columns (total 1 columns):
0    1825 non-null float64
dtypes: float64(1)
memory usage: 28.5 KB
None
Out[165]:
                     0
2010-01-01   -0.323354
2010-01-02   -1.148487
2010-01-03   -0.206003
2010-01-04    1.768663
2010-01-05  -25.856032
2010-01-06   10.113401
2010-01-07   -0.754476
2010-01-08    1.271442
2010-01-09   -0.845800
2010-01-10    2.037104
2010-01-11   -7.730482
2010-01-12   10.873351
2010-01-13    0.924056
2010-01-14    1.000000
2010-01-15   -2.764203
2010-01-16    1.205966
2010-01-17    1.775265
2010-01-18    4.983361
2010-01-19  -17.537263
2010-01-20    1.000000
2010-01-21    1.000000
2010-01-22    2.176172
2010-01-23   -2.442958
2010-01-24   -3.126872
2010-01-25   -1.612845
2010-01-26   13.099342
2010-01-27   -1.683263
2010-01-28    1.000000
2010-01-29    0.225677
2010-01-30    7.862236
...                ...
2014-12-01  -71.974731
2014-12-02    1.000000
2014-12-03   -0.975790
2014-12-04   -4.715373
2014-12-05    1.000000
2014-12-06   -1.111680
2014-12-07    0.522016
2014-12-08    3.233062
2014-12-09 -228.056902
2014-12-10    1.342591
2014-12-11  -11.872743
2014-12-12    1.000000
2014-12-13  -75.493044
2014-12-14    0.354384
2014-12-15    0.248133
2014-12-16   -2.483432
2014-12-17    1.000000
2014-12-18   -2.942194
2014-12-19    0.561869
2014-12-20    2.421608
2014-12-21    1.629229
2014-12-22    4.050602
2014-12-23   -1.040709
2014-12-24    1.000000
2014-12-25   -7.681764
2014-12-26    1.032772
2014-12-27   13.222927
2014-12-28   -8.698441
2014-12-29    1.658290
2014-12-30   -0.951775

[1825 rows x 1 columns]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何合并具有不同时间戳密度的两个熊猫数据帧?

如何合并具有不同时间戳的两个不同数据帧?

合并具有不同时间戳(不同时间间隔)的两个数据帧

如何合并两个具有不同时间戳的熊猫

SQL查询以合并两个具有不同时间戳的表作为索引

合并两个带有时间序列索引的熊猫数据帧

SparkSQL:如何对两个具有不同时间戳的时间序列数据集求和

如何并排组合两个具有不同时间框架但有空白的 Panda 数据框

合并/合并熊猫中具有不同频率时间序列索引的两个数据帧?

用参数显示两个不同时间之间的所有时间

合并两个具有不同时间粒度的时间序列

将具有相同时间范围的两个时间序列数据添加到单个数据帧或xts数据的最佳方法

设置具有两个索引列的时间序列熊猫数据帧的频率

两个setIntervals没有按顺序激活并在不同时间触发

在具有不同时间戳的两个文档之间减去数字字段

逐个元素地汇总两个具有不同索引的熊猫数据帧

如何在python中的同一轴上绘制具有不同时间频率的两个时间序列数据?

两个熊猫数据帧的条件逐元素乘法

如何在Python Matplotlib中绘制两个具有不同时间间隔的数据集并使它们共享轴

同一ChartJs图表上具有不同时间实例的两个数据集

Bash 命令对具有不同时间序列行的两个 csv 文件进行列合并

“复制但保留两个文件”,但仅适用于具有不同时间戳记的文件

查找两个不同时间之间是否存在时间,键入问题

从两个不同长度的数组中获取值的不同时间

获取数据帧中不同时间窗口的最后一个值

python结合了不同时间戳和相同列的26个数据帧

处理数据帧中的不同时间格式

如何通过逐列相乘来组合两个不同的多索引熊猫数据帧

用numpy减去两个交错的,基于不同时间序列的数组?