やりたいこと
表1の様なDataFrame から 表2のkey列とd列の値を持つ行を抽出したい。
表0(df0)
key | mei |
---|---|
01 | AAAA |
FF | FFFF |
表1(df1)
key | b | c |
---|---|---|
01 | 100 | A1 |
02 | 200 | A2 |
03 | 300 | A3 |
04 | 400 | A4 |
05 | 500 | A5 |
FF | FFF | FF |
表2(df2)
|key|d|e|
|:--|:--|
|01|02,04|100|
|FF|05|200|
python
1import pandas as pd 2from io import StringIO 3import itertools 4 5s = """key,mei 601,AAA 7FF,FFF 8""" 9df0 = pd.read_csv(StringIO(s)) 10 11s = """key,b,c 1201,100,A1 1302,200,A2 1403,300,A3 1504,400,A4 1605,500,A5 17FF,FFF,FF""" 18df1 = pd.read_csv(StringIO(s)) 19 20s = """key,d,e 2101,"02,04",100 22FF,"05",200 23""" 24df2 = pd.read_csv(StringIO(s)) 25 26for data1 in zip(df0['key']): 27 df2_2 = df2.loc[(df2['key'] == data1[0]),['d']] 28 df1_2 = df1.query('key == @data1[0] or key in @df2_2') 29# 30# 表1のkey値毎の処理 31# 32
key値が01のとき以下の様な結果になりません。
結果
key | b | c |
---|---|---|
01 | 100 | A1 |
02 | 200 | A2 |
04 | 400 | A4 |
どの様な記述をすれば良いでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/02 11:29
2021/12/03 02:15
2021/12/03 02:39
2021/12/03 07:42
2021/12/03 08:05