一意の値を使用して、別のデータフレームに基づいてデータフレームを作成します

user3267989

私がそのようなパンダのデータフレームを持っている場合:

colA colB
 A    A1
 B    C1
 A    B1
 B    A1

colAには2つの一意の値(A、B)があり、colBには3つの一意の値(A1、B1、およびC1)があります。

colAとcolBがすべての組み合わせであり、以前のdfに存在する組み合わせに基づいて1または0である別の列colCである新しいデータフレームを作成したいと思います。

期待される結果:

colA colB colC
 A    A1   1
 A    B1   1
 A    C1   0
 B    A1   1
 B    B1   0
 B    C1   1
ジェズリール

最初に、でDataFrame.assign埋めて新しい列を作成1、次に両方の列の値で作成MultiIndex.from_productSeries.uniqueDataFrame.set_index使用後にDataFrame.reindex-パラメータcolCによって列に新しく追加された行に値を設定することができfill_valueます。

mux = pd.MultiIndex.from_product([df['colA'].unique(),
                                  df['colB'].unique()], names=['colA','colB'])
df1 = df.assign(colC = 1).set_index(['colA','colB']).reindex(mux, fill_value=0).reset_index()
print (df1)
  colA  colB  colC
0      A  A1     1
1      A  C1     0
2      A  B1     1
3      B  A1     1
4      B  C1     1
5      B  B1     0

代替による使用のリシェイプありDataFrame.set_indexSeries.unstackそしてDataFrame.stack

df1 = (df.assign(colC = 1)
         .set_index(['colA','colB'])['colC']
         .unstack(fill_value=0)
         .stack()
         .reset_index(name='ColC'))

print (df1)
  colA colB  ColC
0    A   A1     1
1    A   B1     1
2    A   C1     0
3    B   A1     1
4    B   B1     0
5    B   C1     1

別の解決策は、新規作成であるDataFrameことでitertools.productDataFrame.mergeindicator=Trueで比較することにより、リネーム列とセットbothとするために、整数にキャストTrue/False1/0のマッピング:

from  itertools import product
df1 = pd.DataFrame(product(df['colA'].unique(), df['colB'].unique()), columns=['colA','colB'])
df = df1.merge(df, how='left', indicator=True).rename(columns={'_merge':'colC'})
df['colC'] = df['colC'].eq('both').astype(int)
print (df)
  colA colB  colC
0    A   A1     1
1    A   C1     0
2    A   B1     1
3    B   A1     1
4    B   C1     1
5    B   B1     0

最後に、必要に応じて、両方の列による並べ替えを追加しますDataFrame.sort_values

df1 = df1.sort_values(['colA','colB'])

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

別のデータフレームの一意の値を使用してデータフレームを作成し、データを入力します

分類Dev

一意の値に基づいてデータフレーム全体をフィルタリングし、Rに新しい列を作成します

分類Dev

別のデータフレームの値に基づいてデータフレームを更新します

分類Dev

一意のIDパンダデータフレームに基づいて行を収集します

分類Dev

パンダデータフレーム内のすべての一意の値に基づいてデータをピボットします

分類Dev

Python:ネストされたリストの一意の値に基づいて列を持つパンダデータフレームを作成します

分類Dev

一意の値に基づいて2列のデータフレームを並べ替えます

分類Dev

別のデータフレームに基づいて新しいデータフレームを作成する

分類Dev

Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

分類Dev

一意の値と列の値に基づいて、データフレームから行をランダムに描画します

分類Dev

別のデータフレームの一連のルールに基づいて、データフレームに一連の変数を作成します

分類Dev

Pythonのデータフレームの条件に基づいて可能なすべての一意の組み合わせでリストを作成します

分類Dev

Pythonデータフレームは、いくつかの基準に基づいて一意の値を一覧表示します

分類Dev

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

分類Dev

別のデータフレームの値を使用して、列名に基づいてパンダデータフレームの行を乗算します

分類Dev

ソートされた値に基づいてデータフレーム内の一意の値を選択します

分類Dev

別の列の進行値に基づいてデータフレーム列を作成しますか?

分類Dev

一意の値に基づいてデータフレームに関数を適用する

分類Dev

R:増分列に基づいて、データフレームに一意のIDを割り当てます

分類Dev

他の列の一意の組み合わせに基づいてデータフレーム列の値を変更します

分類Dev

別のデータフレーム値に基づいて列を作成します

分類Dev

別のデータフレームの列値に基づいてデータフレームを作成します

分類Dev

Rの使用-別のデータフレームのグループ最大値に基づいてデータフレームを再形成します

分類Dev

別の列のすべての一意の値に基づく列の最大値(データフレーム)

分類Dev

null以外の値を持つ別の列に基づいて、ラムダを使用してデータフレームに列を作成します

分類Dev

Rの別のデータフレームの別の列に基づいて、あるデータフレームの列を作成します

分類Dev

別の行の値に基づいてデータフレームの行の値を更新しますか?

分類Dev

条件に基づいて、データフレーム列の値を別の列の値に変更します

分類Dev

条件に基づいてデータフレームの値を代入します

Related 関連記事

  1. 1

    別のデータフレームの一意の値を使用してデータフレームを作成し、データを入力します

  2. 2

    一意の値に基づいてデータフレーム全体をフィルタリングし、Rに新しい列を作成します

  3. 3

    別のデータフレームの値に基づいてデータフレームを更新します

  4. 4

    一意のIDパンダデータフレームに基づいて行を収集します

  5. 5

    パンダデータフレーム内のすべての一意の値に基づいてデータをピボットします

  6. 6

    Python:ネストされたリストの一意の値に基づいて列を持つパンダデータフレームを作成します

  7. 7

    一意の値に基づいて2列のデータフレームを並べ替えます

  8. 8

    別のデータフレームに基づいて新しいデータフレームを作成する

  9. 9

    Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

  10. 10

    一意の値と列の値に基づいて、データフレームから行をランダムに描画します

  11. 11

    別のデータフレームの一連のルールに基づいて、データフレームに一連の変数を作成します

  12. 12

    Pythonのデータフレームの条件に基づいて可能なすべての一意の組み合わせでリストを作成します

  13. 13

    Pythonデータフレームは、いくつかの基準に基づいて一意の値を一覧表示します

  14. 14

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

  15. 15

    別のデータフレームの値を使用して、列名に基づいてパンダデータフレームの行を乗算します

  16. 16

    ソートされた値に基づいてデータフレーム内の一意の値を選択します

  17. 17

    別の列の進行値に基づいてデータフレーム列を作成しますか?

  18. 18

    一意の値に基づいてデータフレームに関数を適用する

  19. 19

    R:増分列に基づいて、データフレームに一意のIDを割り当てます

  20. 20

    他の列の一意の組み合わせに基づいてデータフレーム列の値を変更します

  21. 21

    別のデータフレーム値に基づいて列を作成します

  22. 22

    別のデータフレームの列値に基づいてデータフレームを作成します

  23. 23

    Rの使用-別のデータフレームのグループ最大値に基づいてデータフレームを再形成します

  24. 24

    別の列のすべての一意の値に基づく列の最大値(データフレーム)

  25. 25

    null以外の値を持つ別の列に基づいて、ラムダを使用してデータフレームに列を作成します

  26. 26

    Rの別のデータフレームの別の列に基づいて、あるデータフレームの列を作成します

  27. 27

    別の行の値に基づいてデータフレームの行の値を更新しますか?

  28. 28

    条件に基づいて、データフレーム列の値を別の列の値に変更します

  29. 29

    条件に基づいてデータフレームの値を代入します

ホットタグ

アーカイブ