Pandasデータフレーム列にデフォルト値を代入する方法は?

ハンマーオブライト

以下は、df.head()日付がインデックスとして設定されたDataSetのです。

               Article_ID Country_Code Sold_Units
     Date           
2017-01-01        3576        AT         1
2017-01-02        1579        FR         1
2017-01-02         332        FI         2
2017-01-03        3576        AT         1
2017-01-03         332        SE         1

国コードには、「AT、FR、FI、SE」の4つの値があります。これらの4つのcountry_codeがそれらの日付に存在しない場合は、すべての日付に追加し、Article_IDとSold_Unitsでそれらの値を0に代入したいと思います。

出力例は基本的に次のようになります。

               Article_ID Country_Code Sold_Units
     Date           
2017-01-01        3576        AT         1
2017-01-01          0         FR         0    # FR FI SE added with 0s.
2017-01-01          0         FI         0
2017-01-01          0         SE         0
2017-01-02          0         AT         0    # AT, SE added
2017-01-02        1579        FR         1
2017-01-02         332        FI         2
2017-01-02          0         SE         0
2017-01-03        3576        AT         1
2017-01-03          0         FR         0    # FR, FI added
2017-01-03          0         FI         0
2017-01-03         332        SE         1

国コードごとにこのようなデフォルト値を追加するにはどうすればよいですか?

ジェズリール

以下のためのユニークなソリューションDatetimeIndexとのCountry_Code組み合わせ:

日時の一意の値と次のコードのすべての組み合わせをMultiIndex追加Country_CodeDatetimeIndex作成しますDataFrame.reindex

df = (df.set_index('Country_Code', append=True)
        .reindex(pd.MultiIndex.from_product([df.index.unique(), df['Country_Code'].unique()], 
                                            names=['Date','Country_Code']), fill_value=0)
        .reset_index(level=1))
print (df)
           Country_Code  Article_ID  Sold_Units
Date                                           
2017-01-01           AT        3576           1
2017-01-01           FR           0           0
2017-01-01           FI           0           0
2017-01-01           SE           0           0
2017-01-02           AT           0           0
2017-01-02           FR        1579           1
2017-01-02           FI         332           2
2017-01-02           SE           0           0
2017-01-03           AT        3576           1
2017-01-03           FR           0           0
2017-01-03           FI           0           0
2017-01-03           SE         332           1

またはとDataFrame.unstack一緒に使用DataFrame.stack

df = (df.set_index('Country_Code', append=True)
        .unstack(fill_value=0)
        .stack()
        .reset_index(level=1))

print (df)
           Country_Code  Article_ID  Sold_Units
Date                                           
2017-01-01           AT        3576           1
2017-01-01           FI           0           0
2017-01-01           FR           0           0
2017-01-01           SE           0           0
2017-01-02           AT           0           0
2017-01-02           FI         332           2
2017-01-02           FR        1579           1
2017-01-02           SE           0           0
2017-01-03           AT        3576           1
2017-01-03           FI           0           0
2017-01-03           FR           0           0
2017-01-03           SE         332           1

国コードを使用した日時ごとの複数の値のソリューション:

エラーは、データが次のようなものであることを意味します。

print (df)
            Article_ID Country_Code  Sold_Units
Date                                           
2017-01-01        3576           AT           1
2017-01-02        1579           FI           1 <-FI
2017-01-02         332           FI           2 <-FI
2017-01-03        3576           AT           1
2017-01-03         332           SE           1

df = (df.groupby(['Date','Country_Code'])
        .sum()
        .unstack(fill_value=0)
        .stack()
        .reset_index(level=1))
print (df)
           Country_Code  Article_ID  Sold_Units
Date                                           
2017-01-01           AT        3576           1
2017-01-01           FI           0           0
2017-01-01           SE           0           0
2017-01-02           AT           0           0
2017-01-02           FI        1911           3
2017-01-02           SE           0           0
2017-01-03           AT        3576           1
2017-01-03           FI           0           0
2017-01-03           SE         332           1

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Daskデータフレームに列値を代入する方法は?

分類Dev

データフレームにデフォルト値を追加する

分類Dev

python pandasデータフレーム:デフォルト値が反復可能である場合、デフォルト値で新しい列を作成する

分類Dev

pythonpandasはデフォルト値としてデータフレーム列にリストを追加します

分類Dev

pandasデータフレームのファイル出力をフォーマットする方法は?

分類Dev

列をタイトルにピボットする方法は?-python pandasデータフレーム

分類Dev

パンダデータフレームフォワード列値検索をベクトル化する方法

分類Dev

特定の条件で pandas データフレームの列値をフィルタリングする方法は?

分類Dev

あるデータフレームから別のデータフレームに値を代入する

分類Dev

あるデータフレームの列の値を別のデータフレームの列の値から代入する方法

分類Dev

Pandasデータフレームの列の値を分割する方法は?

分類Dev

Rのベクトルの値に従ってデータフレームの列を変換する方法は?

分類Dev

pandasデータフレームの条件に基づいて列の値をシフトする方法

分類Dev

pandasデータフレームに列レベルを追加する方法

分類Dev

欠損値がある場合、pandasデータフレーム文字列列を小文字にする方法は?

分類Dev

pandasデータフレームを使用して、データフレーム値の各列を1つずつ新しいシートに追加する方法

分類Dev

Pandasデータフレーム列に文字列値を含むリストを入力する方法

分類Dev

パンダで配列を特定のデータフレーム形式にフォーマットする方法は?

分類Dev

pandasデータフレームの「デフォルト列」を想定するにはどうすればよいですか?

分類Dev

列にタプルを含むPandasデータフレームを再フォーマットしますか?

分類Dev

Deedleのデフォルト値でデータフレームに列を追加します

分類Dev

forループのpandasデータフレームに行を追加する方法は?

分類Dev

データフレーム内の列の値を小文字にする方法は?

分類Dev

フォルダ内のすべてのcsvファイルのデータフレーム列の値を他のデータフレーム列の値に置き換える方法は?

分類Dev

データフレームの値を列に「ピボット」する方法

分類Dev

データフレーム列リスト値を要素に変換する方法

分類Dev

デフォルト値をreduxフォームに渡す方法

分類Dev

pandasデータフレームをColumn == value列を持つテーブルに変換する方法は?

分類Dev

pandasデータフレームの列から文字列値を削除する方法

Related 関連記事

  1. 1

    Daskデータフレームに列値を代入する方法は?

  2. 2

    データフレームにデフォルト値を追加する

  3. 3

    python pandasデータフレーム:デフォルト値が反復可能である場合、デフォルト値で新しい列を作成する

  4. 4

    pythonpandasはデフォルト値としてデータフレーム列にリストを追加します

  5. 5

    pandasデータフレームのファイル出力をフォーマットする方法は?

  6. 6

    列をタイトルにピボットする方法は?-python pandasデータフレーム

  7. 7

    パンダデータフレームフォワード列値検索をベクトル化する方法

  8. 8

    特定の条件で pandas データフレームの列値をフィルタリングする方法は?

  9. 9

    あるデータフレームから別のデータフレームに値を代入する

  10. 10

    あるデータフレームの列の値を別のデータフレームの列の値から代入する方法

  11. 11

    Pandasデータフレームの列の値を分割する方法は?

  12. 12

    Rのベクトルの値に従ってデータフレームの列を変換する方法は?

  13. 13

    pandasデータフレームの条件に基づいて列の値をシフトする方法

  14. 14

    pandasデータフレームに列レベルを追加する方法

  15. 15

    欠損値がある場合、pandasデータフレーム文字列列を小文字にする方法は?

  16. 16

    pandasデータフレームを使用して、データフレーム値の各列を1つずつ新しいシートに追加する方法

  17. 17

    Pandasデータフレーム列に文字列値を含むリストを入力する方法

  18. 18

    パンダで配列を特定のデータフレーム形式にフォーマットする方法は?

  19. 19

    pandasデータフレームの「デフォルト列」を想定するにはどうすればよいですか?

  20. 20

    列にタプルを含むPandasデータフレームを再フォーマットしますか?

  21. 21

    Deedleのデフォルト値でデータフレームに列を追加します

  22. 22

    forループのpandasデータフレームに行を追加する方法は?

  23. 23

    データフレーム内の列の値を小文字にする方法は?

  24. 24

    フォルダ内のすべてのcsvファイルのデータフレーム列の値を他のデータフレーム列の値に置き換える方法は?

  25. 25

    データフレームの値を列に「ピボット」する方法

  26. 26

    データフレーム列リスト値を要素に変換する方法

  27. 27

    デフォルト値をreduxフォームに渡す方法

  28. 28

    pandasデータフレームをColumn == value列を持つテーブルに変換する方法は?

  29. 29

    pandasデータフレームの列から文字列値を削除する方法

ホットタグ

アーカイブ