[解決済み] 1つの課題でpandas dataframeに複数の列を追加するにはどうすればよいですか?
2022-04-10 22:04:10
質問
私はpandasの初心者で、pandasに複数の列を同時に追加する方法を見つけようとしています。 どのようなヘルプでも結構です。 理想的には、複数のステップを繰り返すのではなく、1つのステップでこれを行いたいのですが...。
import pandas as pd
df = {'col_1': [0, 1, 2, 3],
'col_2': [4, 5, 6, 7]}
df = pd.DataFrame(df)
df[[ 'column_new_1', 'column_new_2','column_new_3']] = [np.nan, 'dogs',3] #thought this would work here...
解決方法は?
あなたの構文もうまくいくと思っていたのですが。問題は、カラムリスト構文で新しいカラムを作成したときに (
df[[new1, new2]] = ...
) 、pandasは右辺がDataFrameであることを要求します(DataFrameのカラムが作成するカラムと同じ名前であるかどうかは、実際には問題ではないことに注意してください)。
この構文は、スカラー値を
既存
カラムにスカラー値を割り当てることもできますし、単一カラムの構文 (
df[new1] = ...
). つまり、これをいくつかの単一列の代入に変換するか、右辺に適切なDataFrameを作成することが解決策となります。
以下、いくつかのアプローチを紹介します。 意志 を働かせる。
import pandas as pd
import numpy as np
df = pd.DataFrame({
'col_1': [0, 1, 2, 3],
'col_2': [4, 5, 6, 7]
})
次に、以下のいずれかを行う。
1)リストアンパッキングを使用して、3つの課題を1つにまとめる。
df['column_new_1'], df['column_new_2'], df['column_new_3'] = [np.nan, 'dogs', 3]
2)
DataFrame
は、インデックスに合わせて1行を展開するため、便利です。
df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)
3) 新しい列を持つ一時的なデータフレームを作り、後で元のデータフレームと結合する。
df = pd.concat(
[
df,
pd.DataFrame(
[[np.nan, 'dogs', 3]],
index=df.index,
columns=['column_new_1', 'column_new_2', 'column_new_3']
)
], axis=1
)
4) 前と同様ですが
join
の代わりに
concat
(効率が悪いかもしれません)。
df = df.join(pd.DataFrame(
[[np.nan, 'dogs', 3]],
index=df.index,
columns=['column_new_1', 'column_new_2', 'column_new_3']
))
5) dictを使用すると、前の2つの方法よりも新しいデータフレームを作成するのがより自然ですが、新しい列はアルファベット順にソートされます(少なくとも Python 3.6または3.7より前のバージョンでは ):
df = df.join(pd.DataFrame(
{
'column_new_1': np.nan,
'column_new_2': 'dogs',
'column_new_3': 3
}, index=df.index
))
6)使用する
.assign()
を複数のカラム引数で指定します。
私は @zero の答えのこの変形がとても好きですが、前のものと同様に、少なくとも初期のバージョンの Python では、新しいカラムは常にアルファベット順にソートされます。
df = df.assign(column_new_1=np.nan, column_new_2='dogs', column_new_3=3)
7)これは面白い(ベースは https://stackoverflow.com/a/44951376/3830997 ) が、手間をかける価値があるのはいつなのか分からない。
new_cols = ['column_new_1', 'column_new_2', 'column_new_3']
new_vals = [np.nan, 'dogs', 3]
df = df.reindex(columns=df.columns.tolist() + new_cols) # add empty cols
df[new_cols] = new_vals # multi-column assignment works for existing cols
8)結局、3つの別々の課題に勝つのは難しい。
df['column_new_1'] = np.nan
df['column_new_2'] = 'dogs'
df['column_new_3'] = 3
注:これらのオプションの多くは、他の回答ですでに取り上げられています。 DataFrameに複数のカラムを追加し、既存のカラムと等しくなるように設定する。 , pandasのDataFrameに複数のカラムを一度に追加することは可能ですか? , pandas DataFrameに複数の空の列を追加する
関連
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] 一行ずつ追加してPandas Dataframeを作成する
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Pythonショートビデオクローラーチュートリアル
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python 3.6+で辞書は順番に並びますか?