Pythonの使用方法2つのパンダデータフレームを文字列でマージまたは結合する

スティーブン

2つのデータフレームのデータを結合したいと思います。データフレームは文字列です

df1=pd.read_csv('test1.csv',encoding='utf8',index_col=['id_df1'],header=0)
df2=pd.read_csv('test2.csv',encoding='utf8',index_col=['id_df2'],header=0)
print(df1)
print(df2)

out:
id_df1  student  contact_person
1       john     Amy
2       jeff     Cindy
3       steven   Bob
4       tina     Amy


id_df2  student  parents_list
1       tina     (Amy) (Bob)
2       steven   (Eric) (Bob)
3       john     (Amy)
4       jeff     (Frank) (Harry)

print(type(df1['contact_person'][0]))
print(type(df2['parents_list'][0]))

out:
<class 'str'>
<class 'str'>

if df1 ['student'] == df2 ['student']&df1 ['contact_person'] match df2 ['parents_list']
次のような「outer」メソッドを使用します。

output

    id_df1 id_df2 student contact_person parents
0   1      3      john    Amy            (Amy)
1   3      2      steven  Bob            (Eric) (Bob)
2   4      1      tina    Amy            (Amy) (Bob)
3   2      null   jeff    Cindy          null
4   null   4      jeff    null           (Frank) (Harry)
Tボーンステーキを一枚ください

1つの方法は次のとおりです。最初に、条件が満たされた場合にdf1列を作成しますbool

df1['bool'] = df1.apply(lambda row: True if row['contact_person'] in df2['parents_list'][df2['student'] == row['student']].iloc[0] else False,1)

次にmerge、条件が満たされている場合と満たさdf_yesappendていない場合がありdf_noます。

df_yes = df1[df1['bool'] == True].\
         merge(df2, on='student', how = 'left').drop('bool',1)
df_no = df1[df1['bool'] == False].\
        append(df2[df2['student'].isin(df1['student'][df1['bool'] == False])]).drop('bool',1)

最後にappend両方だけ

list_ordered_col = ['id_df1', 'id_df2', 'student', 'contact_person', 'parents_list']
df_output = df_yes.append(df_no)[list_ordered_col ].\
            reset_index(drop=True)

注:parent_listの以前の入力で機能していました(a、b、c ...の場合)

編集:置換df1['bool']=...

def parantes_in_parentList (row, df_list):
    df_parent_list = df_list['parents_list'][df_list['student'] == row['student']]
    if not df_parent_list.empty:
        if row['contact_person'] in df_parent_list.iloc[0]:
            return True
    # return False in all the other case
    return False
df1['bool'] = df1.apply(parantes_in_parentList , args=([df2]),axis=1)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

パンダの同じデータフレーム内で列を結合/マージする方法は?

分類Dev

パンダ:2つのデータフレームをマージ(または内部結合)しますが、列は1つだけから保持します

分類Dev

Python: False/True を使用したピボット関数で 2 つのパンダ データフレームを結合/マージする

分類Dev

パンダ:列の値が繰り返されている列で複数のデータフレームを結合またはマージします

分類Dev

Pythonパンダで2つの複雑なデータフレームをマージする方法は?

分類Dev

パンダは値を合計する2つのデータフレームをマージします

分類Dev

2つのパンダデータフレームを結合する(共通の列で結合)

分類Dev

パンダで2つのデータフレームをマージするときに文字列を「あいまい」に一致させる方法

分類Dev

2つのパンダデータフレームを結合する方法

分類Dev

2つのパンダデータフレームを結合する方法

分類Dev

パンダを使用して2つのデータフレーム間の列を合計する方法は?

分類Dev

パンダのデータフレームを2列で結合する方法は?

分類Dev

パンダ:最初のデータフレームの情報を保持して、列の2つのデータフレームをマージする方法は?

分類Dev

パンダで正規表現を使用して、2つのデータフレーム間で左結合/マージを実行できますか?

分類Dev

Pythonで2つのパンダデータフレーム列をカスタムソートする方法は?

分類Dev

パンダは列が異なる2つのデータフレームをマージします

分類Dev

パンダで周波数時系列インデックスが異なる2つのデータフレームをマージ/結合しますか?

分類Dev

Pythonで2つのパンダデータフレームを共通の列と文字列の条件でマージします

分類Dev

パンダ:複数の列の2つのデータフレームをマージ(結合)

分類Dev

マージまたは結合を使用して2つのデータフレームを比較しますか?

分類Dev

パンダ:ルールを使用して、データフレームの2つの列の文字列値を新しい列に結合します

分類Dev

Rで2つのデータフレームを結合するときに、マージはランダムな行をスキップします

分類Dev

Pythonでパンダのデータフレームを結合する方法

分類Dev

共通の列の要素を合計しながら、パンダのデータフレームをマージまたは結合します

分類Dev

座標を使用してパンダの2つのデータフレームを結合する方法

分類Dev

パンダは2つのデータフレームを優先的に連結/マージします

分類Dev

パンダで2つのデータフレームをマージする

分類Dev

パンダで2つのデータフレームをマージする

分類Dev

パンダで2つのデータフレームをマージする

Related 関連記事

  1. 1

    パンダの同じデータフレーム内で列を結合/マージする方法は?

  2. 2

    パンダ:2つのデータフレームをマージ(または内部結合)しますが、列は1つだけから保持します

  3. 3

    Python: False/True を使用したピボット関数で 2 つのパンダ データフレームを結合/マージする

  4. 4

    パンダ:列の値が繰り返されている列で複数のデータフレームを結合またはマージします

  5. 5

    Pythonパンダで2つの複雑なデータフレームをマージする方法は?

  6. 6

    パンダは値を合計する2つのデータフレームをマージします

  7. 7

    2つのパンダデータフレームを結合する(共通の列で結合)

  8. 8

    パンダで2つのデータフレームをマージするときに文字列を「あいまい」に一致させる方法

  9. 9

    2つのパンダデータフレームを結合する方法

  10. 10

    2つのパンダデータフレームを結合する方法

  11. 11

    パンダを使用して2つのデータフレーム間の列を合計する方法は?

  12. 12

    パンダのデータフレームを2列で結合する方法は?

  13. 13

    パンダ:最初のデータフレームの情報を保持して、列の2つのデータフレームをマージする方法は?

  14. 14

    パンダで正規表現を使用して、2つのデータフレーム間で左結合/マージを実行できますか?

  15. 15

    Pythonで2つのパンダデータフレーム列をカスタムソートする方法は?

  16. 16

    パンダは列が異なる2つのデータフレームをマージします

  17. 17

    パンダで周波数時系列インデックスが異なる2つのデータフレームをマージ/結合しますか?

  18. 18

    Pythonで2つのパンダデータフレームを共通の列と文字列の条件でマージします

  19. 19

    パンダ:複数の列の2つのデータフレームをマージ(結合)

  20. 20

    マージまたは結合を使用して2つのデータフレームを比較しますか?

  21. 21

    パンダ:ルールを使用して、データフレームの2つの列の文字列値を新しい列に結合します

  22. 22

    Rで2つのデータフレームを結合するときに、マージはランダムな行をスキップします

  23. 23

    Pythonでパンダのデータフレームを結合する方法

  24. 24

    共通の列の要素を合計しながら、パンダのデータフレームをマージまたは結合します

  25. 25

    座標を使用してパンダの2つのデータフレームを結合する方法

  26. 26

    パンダは2つのデータフレームを優先的に連結/マージします

  27. 27

    パンダで2つのデータフレームをマージする

  28. 28

    パンダで2つのデータフレームをマージする

  29. 29

    パンダで2つのデータフレームをマージする

ホットタグ

アーカイブ