1. ホーム
  2. python

[解決済み] pandasのデータフレームで、2つのカラムの値を1つのカラムに合体させる

2022-02-17 19:18:33

質問内容

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