date: 2017-10-30 22:00:01
tags:
- datasci
- python
- pandas
- dataframe
title: Python pandasで既存のDataFrameに新しい列を追加する [Python]質問:
名前付きの列と、連続数じゃないような列を持つ次のようなインデックス付きDataFrameがある:a b c d2 0.671399 0.101208 -0.181532 0.2412733 0.446172 -0.243316 0.051767 1.5773185 0.614758 0.075793 -0.451460 -0.012493
既存のデータフレームに新しい列「e」を追加したいんだけど、でもデータフレームは何も変更したくないんだ(つまり、新しい列には常にDataFrameと同じ長さ)。
|
join
、append
、 merge
のいろんなバージョンを試したけど、望んでいた結果は得られず、せいぜいエラーになるだけ。上記の例で「e」列を追加するにはどうしたらいいかな?
By tomasz74 | 質問日時: 2012年9月23日 19:00
回答1:
元のdf1のインデックスを使用してSeriesを作ればいいよ。
|
2015年 編集
ある人は、上のコードで SettingWithCopyWarning
が出るっていってるけど、このコードは現在のパンダバージョン0.16.1でも完璧に動作してるよ。
|
SettingWithCopyWarning
は、Dataframeのコピーへのおそらく無効な割り当てを通知することを目的としてる。必ずしもそれは君が間違ったやり方をしてるとは限らないよ(それはfalse positive、偽陽性かもしれないので)。でも、0.13.0以降のものではもっと良い方法がいっぱいある、って注意しようとしてるだけ。。なので、警告が表示された場合は、そのアドバイスに従って: .loc[row_index、col_indexer] = value
を代わりに使ってみて
|
2017年 編集
他の人も行ってるけど、現時点でベストな方法はassign
を使うことみたい:
|
実際、これは今のところより効率的な方法だよ。
By joaquin | 回答日時: 2012年9月23日 19:24
回答2:
これが、新しい列を追加する簡単な方法だよ!: df ['e'] = e
By Kathirmani Sukumar | 回答日時: 2012年12月12日 16:04
Source: Adding new column to existing DataFrame in Python pandas