我正在try 创建一个函数,用于为请求的频率对给定的数据帧进行归一化.

code:

import numpy as np
import pandas as pd
def timeseries_dataframe_normalized(df, normalization_freq = 'complete'):
    """
    Input: 
        df : dataframe 
             input dataframe
        normalization_freq : string
            'daily', 'weekly', 'monthly','quarterly','yearly','complete' (default)
    Return: normalized dataframe
    
    """
    # auxiliary dataframe
    adf = df.copy()
    # convert columns to float
    # Ref: https://stackoverflow.com/questions/15891038/change-column-type-in-pandas
    adf = adf.astype(float)
    # normalized columns
    nor_cols = adf.columns
    # add suffix to columns and create new names for maximum columns
    max_cols = adf.add_suffix('_max').columns
    # initialize maximum columns
    adf.loc[:,max_cols] = np.nan
    # check the requested frequency
    if normalization_freq =='complete':
        adf[max_cols] = adf[nor_cols].max()
    # compute and return the normalized dataframe
    print(adf[nor_cols])
    print(adf[max_cols])
    adf[nor_cols] = adf[nor_cols]/adf[max_cols]
    # return the normalized dataframe
    return adf[nor_cols]
    
# Example
df2 = pd.DataFrame(data={'A':[20,10,30],'B':[1,2,3]})
timeseries_dataframe_normalized(df2)

Expected output:

df2 = 
        A         B
0   0.666667    0.333333
1   0.333333    0.666667
2   1.000000    1.000000

Present output:

我很惊讶得到了下面的错误.然而,当我计算df2/df2.max()时,我得到了预期的输出,但这个函数给了我错误的结果.

ValueError: Columns must be same length as key

推荐答案

将行更改为(以这种方式使用NumPy ndarray划分数据帧):

adf[nor_cols] = adf[nor_cols] / adf[max_cols].to_numpy()

则返回值为:

          A         B
0  0.666667  0.333333
1  0.333333  0.666667
2  1.000000  1.000000

Python相关问答推荐

Python tkinter关闭第一个窗口,同时打开第二个窗口

Pandas基于另一列的价值的新列

如何从同一类的多个元素中抓取数据?

零填充2D数组上的Numpy切片

模型序列化器中未调用现场验证器

Python在tuple上操作不会通过整个单词匹配

如何检测背景有噪的图像中的正方形

比较2 PD.数组的令人惊讶的结果

如何将双框框列中的成对变成两个新列

非常奇怪:tzLocal.get_Localzone()基于python3别名的不同输出?

在Google Colab中设置Llama-2出现问题-加载判断点碎片时Cell-run失败

两个pandas的平均值按元素的结果串接元素.为什么?

avxspan与pandas period_range

关于Python异步编程的问题和使用await/await def关键字

如何在UserSerializer中添加显式字段?

根据列值添加时区

通过ManyToMany字段与Through在Django Admin中过滤

如何在达到end_time时自动将状态字段从1更改为0

未调用自定义JSON编码器

ConversationalRetrivalChain引发键错误