table = pd.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]],
columns=['High','Middle','Low'],
index=['Blue','Green','Red'])
df = pd.DataFrame(data=[['High','Blue'],
['High','Green'],
['Low','Red'],
['Middle','Blue'],
['Low','Blue'],
['Low','Red']],
columns=['A','B'])
>>> df
A B
0 High Blue
1 High Green
2 Low Red
3 Middle Blue
4 Low Blue
5 Low Red
>>> table
High Middle Low
Blue 1 2 3
Green 4 5 6
Red 7 8 9
テーブルの値に基づく3番目の列「C」を追加しようとしています。したがって、最初の行の値は1、2番目の行は4などになります。
これが1次元のルックアップである場合、テーブルをディクショナリに変換し、を使用しますdf['C'] = df['A'].map(table)
。ただし、これは2次元であるため、マップの使用方法や適用方法がわかりません。
理想的には、テーブルをディクショナリ形式に変換して、他のディクショナリと一緒にjsonに保存しますが、これは必須ではありません。
pandas
lookup
table.lookup(df.B,df.A)
Out[248]: array([1, 4, 9, 2, 3, 9], dtype=int64)
#table['c']=table.lookup(df.B,df.A)
またはdf.apply(lambda x : table.loc[x['B'],x['A']],1)
個人的に好きではありませんapply
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加