Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 使用月平均值按行划分的元素可变性_Pandas_Elementwise Operations - Fatal编程技术网

Pandas 使用月平均值按行划分的元素可变性

Pandas 使用月平均值按行划分的元素可变性,pandas,elementwise-operations,Pandas,Elementwise Operations,我有一个称为“df”的df,看起来像这样: year month adjusted_power 333 2018 10 4 334 2018 11 2 335 2018 12 1 336 2019 01 6 337 2019 02 8 338 2019 03 2 339 2019 04 12 340 2019 05

我有一个称为“df”的df,看起来像这样:

     year    month    adjusted_power
333  2018    10       4
334  2018    11       2
335  2018    12       1
336  2019    01       6
337  2019    02       8
338  2019    03       2
339  2019    04       12
340  2019    05       10
341  2019    06       6
342  2019    07       2
343  2019    08       2
344  2019    09       4
345  2019    10       4
346  2019    11       8
347  2019    12       10
而且,我需要将它按元素划分为每月平均数数据帧,称为“dfavgs”

因此,就新df“dfvar”=(df/dfavgs)-1的可变性而言,输出看起来是这样的

我不确定如何继续计算循环结构中的元素可变性,使用lamba变量或类似的东西,但它只给出了前12个可变性数字,列的其余部分是NaN:

dfvar = (df.loc[:,'adjusted_power'].div(dfavgs.loc[:,'adjusted_power_average']) - 1)
谢谢你的帮助

试试看

df['new'] = df.adjust_power/dfavgs.set_index('month')['adjusted_power_average'].reindex(df['month']).values
使用
映射

df['var'] = df['adjusted_power']/df['month'].map(dfavgs.set_index('month')['adjusted_power_average'])
输出:

     year  month  adjusted_power       var
333  2018     10               4  0.666667
334  2018     11               2  0.500000
335  2018     12               1  0.250000
336  2019      1               6  3.000000
337  2019      2               8  2.000000
338  2019      3               2  0.333333
339  2019      4              12  1.500000
340  2019      5              10  1.666667
341  2019      6               6  3.000000
342  2019      7               2  0.500000
343  2019      8               2  0.250000
344  2019      9               4  0.500000
345  2019     10               4  0.666667
346  2019     11               8  2.000000
347  2019     12              10  2.500000

为什么
var
第333行的
333
0
?谢谢,我把帖子改成了正确的答案。嗨,谢谢。你能给我解释一下“.reindex”和“.values”的用途吗?谢谢你,我正在努力学习你的好榜样。
df['var'] = df['adjusted_power']/df['month'].map(dfavgs.set_index('month')['adjusted_power_average'])
     year  month  adjusted_power       var
333  2018     10               4  0.666667
334  2018     11               2  0.500000
335  2018     12               1  0.250000
336  2019      1               6  3.000000
337  2019      2               8  2.000000
338  2019      3               2  0.333333
339  2019      4              12  1.500000
340  2019      5              10  1.666667
341  2019      6               6  3.000000
342  2019      7               2  0.500000
343  2019      8               2  0.250000
344  2019      9               4  0.500000
345  2019     10               4  0.666667
346  2019     11               8  2.000000
347  2019     12              10  2.500000