パンダデータフレーム:グループ内のサイクルで欠落している値を埋める方法はありますか?

Pratyusha Pasumarty

データフレーム内の数値の欠落値を埋めようとしています。各変数グループには1から100の範囲の日付があり、日付が100に達すると、一部の変数には1から始まる日付の2番目のサイクルがあります。変数内ではdate繰り返し可能です。1から100までの数字を入力する必要があります。たとえば、Aの値は1、2、3、3、4、5、6、10で、ここでも1、2、3、3、4です。私はそれらが1,2,3,3,4,5,6,7,8,9,10,11,12,13,14 ......... 100そして再び1,2である必要があります、 3,3,4,5,6,7,8,9,10,11,12,13,14 ......... 100。日付を入力するときにNaN、残りの列に入力したいと思います。

df = pd.DataFrame({"date": [1,2,3,3,4,5,6,10,1,2,3,3,4,1,1,1,4,4,4,1,1,1,2,2,3,3,3,4,4],
               "var": ["A","A","A", "A", "A", "A","A","A","A", "A", "A","A","A", "B", "B", "B","B","B","B" ,"C", "C", "C","C", "D","D","D","D","D","D"],
               "no": [ 1.5, 1.5,1, 2.2, 3.5, 1.5, 1.5, 1.2, 1.3, 1.1, 2, 3,1, 2.2, 3.5, 1.5, 1.5, 1.2, 1.3, 1.1, 2, 3,9,1.2, 1.3, 1.1, 2, 3,9],
               "value": [ -1.135632, 1.212112,0.469112, -0.282863, -1.509059, -1.135632, 1.212112, -0.173215,
                         0.119209, -1.044236, -0.861849, None,0.469112, -0.282863, -1.509059, -1.135632, 1.212112, -0.173215,
                         0.119209, -1.044236, -0.861849, None,0.87,1.2, 1.3, 1.1, 2, 3,9]})
 date  var  no      value
0   1   A   1.5    -1.135632
1   2   A   1.5     1.212112
2   3   A   1.0     0.469112
3   3   A   2.2    -0.282863
4   4   A   3.5    -1.509059
5   5   A   1.5    -1.135632
6   6   A   1.5     1.212112
7   10  A   1.2    -0.173215
8   1   A   1.3     0.119209
9   2   A   1.1    -1.044236
10  3   A   2.0    -0.861849
11  3   A   3.0    NaN
12  4   A   1.0    0.469112
13  1   B   2.2    -0.282863
14  1   B   3.5    -1.509059
15  1   B   1.5    -1.135632
16  4   B   1.5    1.212112
17  4   B   1.2    -0.173215
18  4   B   1.3    0.119209
19  1   C   1.1    -1.044236
20  1   C   2.0    -0.861849
21  1   C   3.0    NaN
22  2   C   9.0    0.870000
23  2   D   1.2    1.200000
24  3   D   1.3    1.300000
25  3   D   1.1    1.100000
26  3   D   2.0    2.000000
27  4   D   3.0    3.000000
28  4   D   9.0    9.000000

必要な出力は次のようになります。

date   var  no      value
1       A   1.5    -1.135632
2       A   1.5     1.212112
3       A   1.0     0.469112
3       A   2.2    -0.282863
4       A   3.5    -1.509059
5       A   1.5    -1.135632
6       A   1.5     1.212112
7       A       NaN        NaN
8       A       NaN        NaN 
9       A       NaN        NaN  
.       .       ....       ..........
.       .       ....       ..........
.       .       ....       ..........
100 A   1.2    -0.173215

これは1つのグループのほんの一例です。このようなグループは少なくとも300あり、データフレームには合計100,000行あります。ここでは、日付3が繰り返されていますが、そのままにしておく必要があります。助けてください!

ポール・ルソー

改訂された回答:

import pandas as pd
from numpy import nan

df = pd.DataFrame({"date": [1,2,3,3,4,5,6,10,1,2,3,3,4,1,1,1,4,4,4,1,1,1,2,2,3,3,3,4,4],
               "var": ["A","A","A", "A", "A", "A","A","A","A", "A", "A","A","A", "B", "B", "B","B","B","B" ,"C", "C", "C","C", "D","D","D","D","D","D"],
               "no": [ 1.5, 1.5,1, 2.2, 3.5, 1.5, 1.5, 1.2, 1.3, 1.1, 2, 3,1, 2.2, 3.5, 1.5, 1.5, 1.2, 1.3, 1.1, 2, 3,9,1.2, 1.3, 1.1, 2, 3,9],
               "value": [ -1.135632, 1.212112,0.469112, -0.282863, -1.509059, -1.135632, 1.212112, -0.173215,
                         0.119209, -1.044236, -0.861849, None,0.469112, -0.282863, -1.509059, -1.135632, 1.212112, -0.173215,
                         0.119209, -1.044236, -0.861849, None,0.87,1.2, 1.3, 1.1, 2, 3,9]})

group_ident=[]
for df_group_index in df['var']:
    if df_group_index in group_ident:
        pass
    else:
        group_ident.append(df_group_index)

counter=[0 for i in range(len(group_ident))]

df_default=pd.DataFrame({"date":[i for i in range(len(df))],
"var":["A" for i in range(len(df))],
"no":[nan for i in range(len(df))],
"value":[nan for i in range(len(df))]})
for index in range(len(df_default)):
    date_case=0
    if df['date'][index]<counter[group_ident.index(df['var'][index])]:
        date_case=counter[group_ident.index(df['var'][index])]+df['date'][index]
    else:
        date_case=df['date'][index]
        counter[group_ident.index(df['var'][index])]=df['date'][index]
    print('date case = ' +str(date_case))
    print(counter[group_ident.index(df['var'][index])])
    for key in df:
        if key == 'date':
            df_default[key][index]=date_case
        else:
            df_default[key][index]=df[key][index]




print(df_default)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

インデックスで2つのパンダデータフレームをマージするが、欠落している値を埋める方法

分類Dev

グループ内の欠落している日付と値を重複するインデックス値で埋めるパンダ

分類Dev

グループ内の欠落している日付と値を重複するインデックス値で埋めるパンダ

分類Dev

パンダのデータフレームで欠落しているタイムスタンプを段階的に埋める方法は?

分類Dev

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

分類Dev

データフレーム内の欠落している値のみを別のデータフレームからの値で埋めます

分類Dev

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

分類Dev

シーケンシャルカレンダーの販売レコードの欠落している行を埋める方法はありますか?

分類Dev

データフレームで欠落している数値を補完する方法はありますか?

分類Dev

観測がない欠落しているグループを埋める方法はRにありますか?

分類Dev

グループ内の欠落している日付と値を埋めるパンダ

分類Dev

データフレーム列の欠落している値をRの列中央値で埋めます

分類Dev

パンダ、リサンプルでグループ化し、欠落している値をゼロで埋めます

分類Dev

パンダは、各グループ内の欠落している日付を前の行の情報で埋めます

分類Dev

欠落しているデータを連続した値で埋めるPython関数はありますか

分類Dev

マルチインデックスデータフレームで欠落している時間値を埋める

分類Dev

パンダまたはダスクのデータフレーム、欠落しているグループ化変数の組み合わせに基づいて値を入力します

分類Dev

欠落している値を他のデータフレームの値で埋める方法

分類Dev

パンダを使用して、データフレーム内の特定のカテゴリのデータで欠落しているデータを埋める方法は?

分類Dev

SQLビューで欠落しているデータポイントをNULLで埋める方法はありますか?

分類Dev

パンダは他の行の列から欠落しているデータを埋めます

分類Dev

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

分類Dev

パンダ:大きなデータセットで欠落している値を埋める方法は?

分類Dev

PILで欠落しているグリフをフォールバックする方法はありますか?

分類Dev

特定の番号/テキストがマルチインデックスパンダデータフレームのインデックスから欠落しているかどうかを確認するにはどうすればよいですか?

分類Dev

特定の値に基づいてデータフレームをフィルタリングするだけでなく、パンダを使用して一意の識別子の他のすべての値を保持する方法はありますか?

分類Dev

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

分類Dev

列のパターンに従ってパンダデータフレームの欠落値を埋める方法は?

分類Dev

data.tableは、グループごとに他の行から欠落している値を埋めます

Related 関連記事

  1. 1

    インデックスで2つのパンダデータフレームをマージするが、欠落している値を埋める方法

  2. 2

    グループ内の欠落している日付と値を重複するインデックス値で埋めるパンダ

  3. 3

    グループ内の欠落している日付と値を重複するインデックス値で埋めるパンダ

  4. 4

    パンダのデータフレームで欠落しているタイムスタンプを段階的に埋める方法は?

  5. 5

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

  6. 6

    データフレーム内の欠落している値のみを別のデータフレームからの値で埋めます

  7. 7

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

  8. 8

    シーケンシャルカレンダーの販売レコードの欠落している行を埋める方法はありますか?

  9. 9

    データフレームで欠落している数値を補完する方法はありますか?

  10. 10

    観測がない欠落しているグループを埋める方法はRにありますか?

  11. 11

    グループ内の欠落している日付と値を埋めるパンダ

  12. 12

    データフレーム列の欠落している値をRの列中央値で埋めます

  13. 13

    パンダ、リサンプルでグループ化し、欠落している値をゼロで埋めます

  14. 14

    パンダは、各グループ内の欠落している日付を前の行の情報で埋めます

  15. 15

    欠落しているデータを連続した値で埋めるPython関数はありますか

  16. 16

    マルチインデックスデータフレームで欠落している時間値を埋める

  17. 17

    パンダまたはダスクのデータフレーム、欠落しているグループ化変数の組み合わせに基づいて値を入力します

  18. 18

    欠落している値を他のデータフレームの値で埋める方法

  19. 19

    パンダを使用して、データフレーム内の特定のカテゴリのデータで欠落しているデータを埋める方法は?

  20. 20

    SQLビューで欠落しているデータポイントをNULLで埋める方法はありますか?

  21. 21

    パンダは他の行の列から欠落しているデータを埋めます

  22. 22

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

  23. 23

    パンダ:大きなデータセットで欠落している値を埋める方法は?

  24. 24

    PILで欠落しているグリフをフォールバックする方法はありますか?

  25. 25

    特定の番号/テキストがマルチインデックスパンダデータフレームのインデックスから欠落しているかどうかを確認するにはどうすればよいですか?

  26. 26

    特定の値に基づいてデータフレームをフィルタリングするだけでなく、パンダを使用して一意の識別子の他のすべての値を保持する方法はありますか?

  27. 27

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

  28. 28

    列のパターンに従ってパンダデータフレームの欠落値を埋める方法は?

  29. 29

    data.tableは、グループごとに他の行から欠落している値を埋めます

ホットタグ

アーカイブ