Pandas Groupby返回平均值但是!排除NaN

时间:2016-10-03 18:44:32

标签: python pandas dataframe

所以我试图理解pandas groupby函数并减少我拥有的大数据帧。这是一个例子:

                             A        B
2016-09-23 19:36:08+00:00   NaN     34.0
2016-09-23 19:36:11+00:00   NaN     33.0
2016-09-23 19:36:12+00:00   24.1    NaN
2016-09-23 19:36:14+00:00   NaN     34.0
2016-09-23 19:36:17+00:00   NaN     34.0
2016-09-23 19:36:20+00:00   NaN     34.0
2016-09-23 19:36:22+00:00   24.2    NaN
2016-09-23 19:36:23+00:00   NaN     34.0
2016-09-23 19:36:26+00:00   NaN     34.0
2016-09-23 19:36:29+00:00   NaN     34.0
2016-09-23 19:36:32+00:00   24.1    NaN
2016-09-23 19:36:33+00:00   NaN     34.0
2016-09-23 19:37:00+00:00   NaN     34.0
2016-09-23 19:37:02+00:00   24.1    NaN

所以我有2个数据系列“A”和“B”,它们以不同的速率采样,其采样时间作为原始数据帧的索引。

我现在想按日期/小时/分钟对数据帧的行进行分组,并返回每分钟数据的平均值。这里的平均值应该忽略数据框中的缺失值。

例如,我会返回这样的内容:

                             A        B
2016-09-23 19:36:00+00:00   24      34.0
2016-09-23 19:37:00+00:00   24.1    33.0

是否可以使用内置的pandas功能执行此操作?

1 个答案:

答案 0 :(得分:2)

我认为您需要使用resample Resampler.mean来计算组的平均值,不包括缺失值:

<?php
$Color = "#000000";
$Test = "#555000";
$css = '#header {
    background-color: '.$Test.';
    width: 500px;
    height: 500px;
}
a {
    color: '.$Color.';
}';

$myfile  = fopen("generated_style.css", "w") or die("Unable to open file!"); // Open file
fwrite($myfile, $css); // Write CSS
fclose($myfile); // Close file
?>

print (df.resample('1Min').mean()) A B 2016-09-23 19:36:00 24.133333 33.888889 2016-09-23 19:37:00 24.100000 34.000000 的另一种解决方案:

groupby