1. ホーム
  2. python

[解決済み] データフレームにリストからカラムを追加する

2022-06-10 19:24:13

質問

このような列を持つデータフレームがあります。

A   B   C  
0   
4
5
6
7
7
6
5

A の値の範囲は 0 から 7 までしかありません。 .

また、このような8つの要素のリストがあります。

List=[2,5,6,8,12,16,26,32]  //There are only 8 elements in this list

A列の要素が n を挿入する必要があります。 n の要素を新しい列に挿入する必要があります。

データフレーム全体をループすることなく、一度にこれを行うにはどうしたらよいでしょうか。

出来上がったデータフレームはこのような感じになります。

A   B   C   D
0           2
4           12
5           16
6           26
7           32
7           32
6           26
5           16

注:データフレームは巨大なので、イテレーションは最後の選択肢のオプションです。しかし、必要ならdictのような他のデータ構造で'List'の要素を並べることもできるんだ。

どのように解決するのですか?

IIUCでは、(残念な名前ですが)自分の作った Listndarray に変換すれば、自然にインデックスが作成されます。

>>> import numpy as np
>>> m = np.arange(16)*10
>>> m[df.A]
array([  0,  40,  50,  60, 150, 150, 140, 130])
>>> df["D"] = m[df.A]
>>> df
    A   B   C    D
0   0 NaN NaN    0
1   4 NaN NaN   40
2   5 NaN NaN   50
3   6 NaN NaN   60
4  15 NaN NaN  150
5  15 NaN NaN  150
6  14 NaN NaN  140
7  13 NaN NaN  130

ここでは、新しい m を使っていますが、もし m = np.asarray(List) を使えば、同じことができるはずです。 df.A の適切な要素を選び出す。 m .


もし、古いバージョンの numpy を使っている場合は m[df.A.values] の代わりに--過去には numpy は他の人とうまく機能せず、いくつかのリファクタリングで pandas のリファクタリングが頭痛の種でした。 現在では状況は改善されています。