文字列列の値に基づいてパンダのデータフレームを分割します

ペヨ

データフレームを3つの新しいデータフレームに分割しようと苦労しています。この場合、サプライヤ名が変更されたときに分割が発生します。既存の質問を検索しました。列の行パンダとPythonに基づいてデータフレームを分割する方法:部分文字列を含む列の値に基づいてデータフレームを多くのデータフレームに分割する方法が近づきましたが、必要な出力を取得できません。

ここに私の問題を説明するためのおもちゃのデータセットが添付されています:

df = pd.DataFrame({'Supplier': ['Supplier1', 'Supplier1', 'Supplier2', 'Supplier2', 'Supplier2', 'Supplier3','Supplier3'], 'Class' : ['A', 'A','A','A','A','B','B']})

そして私は(失敗して)試しました

df1 = df.iloc[:df.index[df['Supplier'] == 'Supplier1'].tolist()[0]]
df2 = df.iloc[df.index[df['Supplier'] == 'Supplier2'].tolist()[0]+1:]
df3 = df.iloc[df.index[df['Supplier'] == 'Supplier3'].tolist()[0]+1:]

私が達成しようとしている結果は次のとおりです。

   Supplier Class
0  Supplier1     A
1  Supplier1     A
    Supplier Class
0  Supplier2     A
1  Supplier2     A
2  Supplier2     A
    Supplier Class
0  Supplier3     B
1  Supplier3     B

これに関するどんな助けでも大いに感謝されるでしょう。ありがとうございました!

更新:使用:

df1 = {i:group for i,group in df.groupby( df['Supplier'].ne(df['Supplier'].shift()).cumsum() )}

与える:

{1:     Supplier Class
0  Supplier1     A
1  Supplier1     A, 2:     Supplier Class
2  Supplier2     A
3  Supplier2     A
4  Supplier2     A, 3:     Supplier Class
5  Supplier3     B
6  Supplier3     B}

別々のデータフレームに分割する必要があるので、次のようにしました。

df3 = pd.DataFrame.from_dict({i:group for i,group in df1.groupby(df1['Supplier'].ne(df1['Supplier'].shift()).cumsum() )},orient='index', columns= ['Class'])

しかし、それはエラーを与えます

 df3 = pd.DataFrame.from_dict({i:group for i,group in df1.groupby(df1['Supplier'].ne(df1['Supplier'].shift()).cumsum() )},orient='index', columns= ['Class'])
AttributeError: 'dict' object has no attribute 'groupby'
chthonicdaemon

これにより、必要な分割が実現すると思います。

groups = [group.reset_index()[['Supplier', 'Class']] for _, group in df.groupby('Supplier')]

あなたはあなたの例の正確な出力をで得ることができます

for group in groups:
    print(group)

出力:

    Supplier Class
0  Supplier1     A
1  Supplier1     A
    Supplier Class
0  Supplier2     A
1  Supplier2     A
2  Supplier2     A
    Supplier Class
0  Supplier3     B
1  Supplier3     B

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

パンダ:特定の列の文字列値に基づいて、データフレームを個別のデータフレームに分割します

分類Dev

条件に基づいてパンダデータフレーム列の特殊文字の文字列を分割する

分類Dev

パンダのデータフレームの別の列の値に基づいて列を追加します

分類Dev

パンダの列の値に基づいてデータフレームの列を選択します

分類Dev

列の値の違いに基づいてパンダのデータフレームを分割する方法

分類Dev

文字の値に基づいてデータフレーム文字を列に分割します

分類Dev

列の値に基づいてパンダの2つのデータフレームを比較します

分類Dev

列の値に基づいて複数のパンダデータフレームを作成します

分類Dev

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

分類Dev

列名の条件に基づいてパンダデータフレームの列値を合計します

分類Dev

パンダは、列の同じ値に基づいてデータフレームをマージします

分類Dev

パンダ:列のnull値に基づいてデータフレームを分割する

分類Dev

パターンに基づいてデータフレームの行を新しい列に文字列分割

分類Dev

以前の値に基づいてパンダデータフレームに列を追加します

分類Dev

列の値に基づいて、パンダのデータフレームを「チャンク」に分割します

分類Dev

列の値に基づいてパンダデータフレームから行を抽出します

分類Dev

パンダは、列の値に基づいてデータフレームを複数のcsvに分割します

分類Dev

Rの列値の文字列に基づいて、データフレームを2つのサブデータフレームに分割します

分類Dev

含まれているテキスト値に基づいてパンダのデータフレーム列を複数の列に分割する方法

分類Dev

パンダ:別のデータフレームの値に基づいて、データフレームに新しい列を追加します

分類Dev

文字列のリストに基づいてパンダデータフレームから値を抽出する

分類Dev

列に基づいてパンダデータフレームのデータを選択します

分類Dev

文字列の状態に基づいてパンダのデータフレーム列に値を割り当てます

分類Dev

特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

分類Dev

特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

分類Dev

他の2つの列の文字列に基づいてパンダのデータフレーム列を作成します

分類Dev

新しいパンダのデータフレーム列に、行の値に基づいて他の列の名前を入力します

分類Dev

別の列の値に基づいて、パンダデータフレームの1つの列に値を追加します

分類Dev

パンダの別のデータフレームからの同様の値に基づいて、データフレームの列に入力します

Related 関連記事

  1. 1

    パンダ:特定の列の文字列値に基づいて、データフレームを個別のデータフレームに分割します

  2. 2

    条件に基づいてパンダデータフレーム列の特殊文字の文字列を分割する

  3. 3

    パンダのデータフレームの別の列の値に基づいて列を追加します

  4. 4

    パンダの列の値に基づいてデータフレームの列を選択します

  5. 5

    列の値の違いに基づいてパンダのデータフレームを分割する方法

  6. 6

    文字の値に基づいてデータフレーム文字を列に分割します

  7. 7

    列の値に基づいてパンダの2つのデータフレームを比較します

  8. 8

    列の値に基づいて複数のパンダデータフレームを作成します

  9. 9

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

  10. 10

    列名の条件に基づいてパンダデータフレームの列値を合計します

  11. 11

    パンダは、列の同じ値に基づいてデータフレームをマージします

  12. 12

    パンダ:列のnull値に基づいてデータフレームを分割する

  13. 13

    パターンに基づいてデータフレームの行を新しい列に文字列分割

  14. 14

    以前の値に基づいてパンダデータフレームに列を追加します

  15. 15

    列の値に基づいて、パンダのデータフレームを「チャンク」に分割します

  16. 16

    列の値に基づいてパンダデータフレームから行を抽出します

  17. 17

    パンダは、列の値に基づいてデータフレームを複数のcsvに分割します

  18. 18

    Rの列値の文字列に基づいて、データフレームを2つのサブデータフレームに分割します

  19. 19

    含まれているテキスト値に基づいてパンダのデータフレーム列を複数の列に分割する方法

  20. 20

    パンダ:別のデータフレームの値に基づいて、データフレームに新しい列を追加します

  21. 21

    文字列のリストに基づいてパンダデータフレームから値を抽出する

  22. 22

    列に基づいてパンダデータフレームのデータを選択します

  23. 23

    文字列の状態に基づいてパンダのデータフレーム列に値を割り当てます

  24. 24

    特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

  25. 25

    特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

  26. 26

    他の2つの列の文字列に基づいてパンダのデータフレーム列を作成します

  27. 27

    新しいパンダのデータフレーム列に、行の値に基づいて他の列の名前を入力します

  28. 28

    別の列の値に基づいて、パンダデータフレームの1つの列に値を追加します

  29. 29

    パンダの別のデータフレームからの同様の値に基づいて、データフレームの列に入力します

ホットタグ

アーカイブ