2015-11-26 14 views
5

が、私は私のデータフレームには、2つの列AとBがあるとしましょう:Pandasのデータフレーム内で2つの列を結合するにはどうすればよいですか?

A B 
1 NaN 
2 5 
3 NaN 
4 6 

私は新しい列を取得したい、列Aの値を使用して、列BにはNaN細胞を埋めC、:

A B C 
1 NaN 1 
2 5 5 
3 NaN 3 
4 6 6 

どうすればよいですか?

私はこれが非常に基本的な質問だと確信していますが、私がパンダスを初めて知りましたので、どんな助力にも感謝します!

答えて

5

あなたが/他の場合はベクトル化されwhere使用することができます。

df['C'] = df['A'].where(df['B'].isnull(), df['B']) 

    A B C 
0 1 NaN 1 
1 2 5 5 
2 3 NaN 3 
3 4 6 6 
+0

where節を指摘してくれてありがとうございます。これは他の多くの目的にも役立つようです。私はちょうどここにそれのためのドキュメンテーションを見た:http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.where.html。私はインサイドの議論が何をしているのだろうと思っています。説明はやや不明瞭です。誰でも私を啓発できますか? – runawaykid

+1

あなたはこれに単純化することができます: 'df ['C'] = df.A.where(df.B.isnull()、df.B)' isnull'はdfとseriesに対して利用可能です。 df ['C'] = df ['A']ここで、(df ['B']。isnull()、df [']'は、属性として列にアクセスすることを奨励します。 'B']) ' – EdChum

+0

私は自分の投稿を編集しますが、アクセントの列の属性は –

0
df['c'] = df['b'].fillna(df['a']) 

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

ドキュメントをそれはデータフレーム内のすべてのNan値を埋めるでしょうか 任意の値を渡すことができます ここで値df ['a']を渡します このメソッドは 'a'の対応する値を 'b'のNan値に置きます そして最後の答えは ' c '

+0

この答えは、 '.fillna()'が何をするのか、おそらくドキュメンテーションのリンクを簡単に説明することで恩恵を受けるでしょう。 –

関連する問題