Pythonパンダ:欠落している日付、時系列の行をgroupbyデータフレームに挿入します

カウボーイケビン05

私はデータフレームを持っていますdf

   Serial_no       date  Index     x    y
           1 2014-01-01      1   2.0  3.0
           1 2014-03-01      2   3.0  3.0
           1 2014-04-01      3   6.0  2.0
           2 2011-03-01      1   5.1  1.3
           2 2011-04-01      2   5.8  0.6
           2 2011-05-01      3   6.5 -0.1
           2 2011-07-01      4   3.0  5.0
           3 2019-10-01      1   7.9 -1.5
           3 2019-11-01      2   8.6 -2.2
           3 2020-01-01      3  10.0 -3.6
           3 2020-02-01      4  10.7 -4.3
           3 2020-03-01      5   4.0  3.0

注意:データはによってグループ化されSerial_nodate毎月(毎月1日)に報告されます。Index各連続する報告日付が直列に連続番号であるので、列が設定されています。各グループで報告された日付の数Serial_noは異なります。報告される日付の間隔はdateグループごとに異なりますSerial_no(グループごとに同じ日付で開始または終了することはありません)。

問題:date時系列の一部の日付について報告されたデータがありませんSerial_noグループでいくつかの日付が欠落していることに注意してください私はそれらの行方不明日付の各グループ内の行を追加するdateと、データがで報告しているxと、y「NaNの」として列。

必要なデータフレームの例:

   Serial_no       date  Index       x       y
           1 2014-01-01      1     2.0     3.0
           1 2014-02-01      2     NaN     NaN
           1 2014-03-01      3     3.0     3.0
           1 2014-04-01      4     6.0     2.0
           2 2011-03-01      1     5.1     1.3
           2 2011-04-01      2     5.8     0.6
           2 2011-05-01      3     6.5    -0.1
           2 2011-06-01      4     NaN     NaN
           2 2011-07-01      5     3.0     5.0
           3 2019-10-01      1     7.9    -1.5
           3 2019-11-01      2     8.6    -2.2
           3 2019-12-01      3     NaN     NaN
           3 2020-01-01      4    10.0    -3.6
           3 2020-02-01      5    10.7    -4.3
           3 2020-03-01      6     4.0     3.0

NaN次のコードを使用して、日付が欠落ている行が挿入されたら、空白のセルを置き換える方法を知っています。

import pandas as pd
import numpy as np

df['x'].replace('', np.nan, inplace=True)
df['y'].replace('', np.nan, inplace=True)

次のコードを使用して、日付が欠落している行が挿入されたら、インデックスをリセットする方法も知っています。

df["Index"] = df.groupby("Serial_no",).cumcount('date')

ただし、各グループで欠落している日付を見つけて、それらの(月次報告)日付の行を挿入する方法がわかりません。どんな助けでも大歓迎です。

ジェズリール

DataFrame.asfreqinでカスタム関数を使用しGroupBy.applyから、次の方法で再割り当てIndexGroupBy.cumcountます。

df['date'] = pd.to_datetime(df['date'])

df = (df.set_index('date')
        .groupby('Serial_no')
        .apply(lambda x: x.asfreq('MS'))
        .drop('Serial_no', axis=1))
df = df.reset_index()
df["Index"] = df.groupby("Serial_no").cumcount() + 1
print (df)
    Serial_no       date  Index     x    y
0           1 2014-01-01      1   2.0  3.0
1           1 2014-02-01      2   NaN  NaN
2           1 2014-03-01      3   3.0  3.0
3           1 2014-04-01      4   6.0  2.0
4           2 2011-03-01      1   5.1  1.3
5           2 2011-04-01      2   5.8  0.6
6           2 2011-05-01      3   6.5 -0.1
7           2 2011-06-01      4   NaN  NaN
8           2 2011-07-01      5   3.0  5.0
9           3 2019-10-01      1   7.9 -1.5
10          3 2019-11-01      2   8.6 -2.2
11          3 2019-12-01      3   NaN  NaN
12          3 2020-01-01      4  10.0 -3.6
13          3 2020-02-01      5  10.7 -4.3
14          3 2020-03-01      6   4.0  3.0

代替ソリューションDataFrame.reindex

df['date'] = pd.to_datetime(df['date'])

f = lambda x: x.reindex(pd.date_range(x.index.min(), x.index.max(), freq='MS', name='date'))
df = df.set_index('date').groupby('Serial_no').apply(f).drop('Serial_no', axis=1)
df = df.reset_index()
df["Index"] = df.groupby("Serial_no").cumcount() + 1

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

時系列データの欠落している行をPythonのパンダデータフレームに追加する方法

分類Dev

日付が欠落しているデータフレームを時系列に変換します

分類Dev

欠落している時間行をデータフレームに挿入します

分類Dev

欠落している日付をパンダデータフレームに追加する

分類Dev

パンダ-データが欠落している行を挿入します

分類Dev

日時インデックスを使用して日付に基づいてパンダデータフレームに行を挿入する

分類Dev

日付列に基づいてパンダデータフレームに行を挿入します

分類Dev

平均を使用してデータフレームに欠落している日付を入力します

分類Dev

「欠落している」マルチインデックス行をパンダデータフレームに挿入する

分類Dev

欠落している日時値に基づいて空のデータフレーム行を追加する

分類Dev

動物園パッケージを使用して、Rの時系列データに欠落している日付と時刻を入力する

分類Dev

パンダ-2つのデータフレームを日付で比較し、欠落している全体を見つけます

分類Dev

Postgresqlの時系列データに欠落している月の日付を追加します

分類Dev

パンダのデータフレーム内の間隔の日付で欠落している観測値を埋めます

分類Dev

データフレームで欠落している日付をどのように管理しますか?

分類Dev

パンダデータフレームに欠落している値を間違って入力する

分類Dev

Pythonパンダデータフレームの欠落している行を繰り返しパターンで埋めます

分類Dev

同様の行を使用して、Pythonパンダデータフレームの欠落している行を埋めます

分類Dev

不足している日付をパンダデータフレームのフラットファイルに挿入します

分類Dev

日時インデックスを使用して時間に基づいてパンダデータフレームに行を挿入する

分類Dev

欠落している時間観測値をデータフレームに挿入する

分類Dev

欠落しているすべての日付データフレームの前日の行を複製する

分類Dev

時系列データテーブルに欠落している日付レコードを追加する

分類Dev

パンダのデータフレームを拡張して、「欠落している」週を含めます

分類Dev

パンダ-時系列データの欠落している時間を埋めます

分類Dev

Sparkデータフレーム列に欠落している日付を入力する

分類Dev

日付列の値が欠落しているデータフレームIDを更新しています

分類Dev

パンダは範囲からデータフレームに欠落している週を追加します

分類Dev

欠落している行をデータフレームに挿入します(可変インデックス範囲)

Related 関連記事

  1. 1

    時系列データの欠落している行をPythonのパンダデータフレームに追加する方法

  2. 2

    日付が欠落しているデータフレームを時系列に変換します

  3. 3

    欠落している時間行をデータフレームに挿入します

  4. 4

    欠落している日付をパンダデータフレームに追加する

  5. 5

    パンダ-データが欠落している行を挿入します

  6. 6

    日時インデックスを使用して日付に基づいてパンダデータフレームに行を挿入する

  7. 7

    日付列に基づいてパンダデータフレームに行を挿入します

  8. 8

    平均を使用してデータフレームに欠落している日付を入力します

  9. 9

    「欠落している」マルチインデックス行をパンダデータフレームに挿入する

  10. 10

    欠落している日時値に基づいて空のデータフレーム行を追加する

  11. 11

    動物園パッケージを使用して、Rの時系列データに欠落している日付と時刻を入力する

  12. 12

    パンダ-2つのデータフレームを日付で比較し、欠落している全体を見つけます

  13. 13

    Postgresqlの時系列データに欠落している月の日付を追加します

  14. 14

    パンダのデータフレーム内の間隔の日付で欠落している観測値を埋めます

  15. 15

    データフレームで欠落している日付をどのように管理しますか?

  16. 16

    パンダデータフレームに欠落している値を間違って入力する

  17. 17

    Pythonパンダデータフレームの欠落している行を繰り返しパターンで埋めます

  18. 18

    同様の行を使用して、Pythonパンダデータフレームの欠落している行を埋めます

  19. 19

    不足している日付をパンダデータフレームのフラットファイルに挿入します

  20. 20

    日時インデックスを使用して時間に基づいてパンダデータフレームに行を挿入する

  21. 21

    欠落している時間観測値をデータフレームに挿入する

  22. 22

    欠落しているすべての日付データフレームの前日の行を複製する

  23. 23

    時系列データテーブルに欠落している日付レコードを追加する

  24. 24

    パンダのデータフレームを拡張して、「欠落している」週を含めます

  25. 25

    パンダ-時系列データの欠落している時間を埋めます

  26. 26

    Sparkデータフレーム列に欠落している日付を入力する

  27. 27

    日付列の値が欠落しているデータフレームIDを更新しています

  28. 28

    パンダは範囲からデータフレームに欠落している週を追加します

  29. 29

    欠落している行をデータフレームに挿入します(可変インデックス範囲)

ホットタグ

アーカイブ