2016-10-03 3 views
1

だから私はパンダのgroupby関数を理解し、私が持っている大きなデータフレームを減らそうとしています。次に例を示します。パンダス・グループバイ・リターン平均!除外NaN

       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」を持っています。

データフレームの行を日付/時間/分でグループ化し、1分あたりのデータの平均を返したいと思います。ここで、平均値は、データフレームの欠損値を無視する必要があります。

だから例えば、私はこのようなものを返します:

       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 

はパンダの機能が組み込まれてこれを実行することが可能ですか?

答えて

2

私は欠損値を除いた、あなたはグループの平均値を計算Resampler.meanresampleを、必要だと思う:

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と別の解決策:ご返信用

print (df.groupby([pd.TimeGrouper('1Min')]).mean()) 
          A   B 
2016-09-23 19:36:00 24.133333 33.888889 
2016-09-23 19:37:00 24.100000 34.000000 
+0

感謝。これらはどちらもすばらしい解決策です。しかし私のために、彼らはエラーで戻ってくる: " DataError:集計する数値型がない"。これは私のデータフレームのインデックスにdatetimeオブジェクトがあるためですか? – MadProgrammer

+0

いいえ、列が数値に変換されていないことを意味します。 'df.A = df.B.astype(float)'と 'df.B = df.b.astype(float)'を試してください。それがエラーを返す場合は、別の解決策があるので、質問はどのように '' astype''キャスティングで動作するのですか? – jezrael

+0

ありがとう、それはそれを解決する! – MadProgrammer