1. ホーム
  2. python

pandasのデータフレームで、2つのカラムの値を1つのカラムに合体させる

2023-09-11 10:43:22

質問

T-SQLのcoalesceと似たような動作をするメソッドを探しています。私は、pandasデータフレームにまばらに入力されている2つの列(列AとB)を持っています。私は次のルールを使用して新しい列を作成したいと思います。

  1. もし列 A の値が がNULLでない場合 の場合、その値を新しいカラムCに使用します。
  2. もしA列の値が がNULLの場合 の場合、新しいカラムCにはカラムBの値を使用します。

私が述べたように、これはMS SQL Serverでcoalesce関数を通して達成することができます。このための良いPythonicメソッドを見つけたことがありません。

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

使用方法 combine_first() :

In [16]: df = pd.DataFrame(np.random.randint(0, 10, size=(10, 2)), columns=list('ab'))

In [17]: df.loc[::2, 'a'] = np.nan

In [18]: df
Out[18]:
     a  b
0  NaN  0
1  5.0  5
2  NaN  8
3  2.0  8
4  NaN  3
5  9.0  4
6  NaN  7
7  2.0  0
8  NaN  6
9  2.0  5

In [19]: df['c'] = df.a.combine_first(df.b)

In [20]: df
Out[20]:
     a  b    c
0  NaN  0  0.0
1  5.0  5  5.0
2  NaN  8  8.0
3  2.0  8  2.0
4  NaN  3  3.0
5  9.0  4  9.0
6  NaN  7  7.0
7  2.0  0  2.0
8  NaN  6  6.0
9  2.0  5  2.0