質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

380閲覧

データフレームと別のデータフレームの特定列の結合がうまく出来ません

FM_TOWNS

総合スコア59

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/01/21 13:25

Pandas初心者です。
以下の2つのデータフレームがあります。
df1
イメージ説明
df2
イメージ説明

df1の末尾列に、df2のcol13を付け加えたく、以下の2つを組みました。
【対処1】
appendを使用しました。
df1=df1.append(df2["col13"])
結果
KeyError: 'col13'

【対処2】
concatを使用しました。
df1=pd.concat([df1,df2['col13']])
結果
KeyError: 'col13'

画像で貼ったデータフレームは非常に小さくシンプルですが、これは今回の質問用のサンプルで作ったものです。
これだけ見ると、データフレーム自体を単純にconcat等で結合、不要分を削除するのも一案ですが、実際にやろうとしているのは、37000×80、37000×100のデータフレーム間の特定の列データの結合であり、pandasで簡潔に処理したく、対処方法をお示しいただけますと助かります。

当方の力では、データフレームと別のデータフレームの特定の列の結合については、Q&Aで適切なものが見つけられませんでした。

ご教示いただけますと有り難い限りです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/01/21 13:32

画像を見ますと col13 ではなく co113 になっている様にみえます。
FM_TOWNS

2022/01/21 13:45

大変お恥ずかしい限りです。確かに、co113となっており、col13に修正、 df1=pd.concat([df1,df2['col13']]) で再度実行しました。 エラーにはなりませんでしたが、 col1 col2 col3    0 0 3.0 10.0 500.0 NaN 1 2.0 30.0 100.0 NaN 2 4.0 40.0 300.0 NaN 3 1.0 20.0 200.0 NaN 0 NaN NaN NaN   500.0 1 NaN NaN NaN   100.0 2 NaN NaN NaN   300.0 3 NaN NaN NaN   200.0 となり、df1の末列右に並ぶ、という当方イメージとは異なる出方となってしまいます。 いずれも4行で特定のcolumnを結合キーとも指定していないので、このように2段になってしまうところは何とかならないものでしょうか? お知恵いただけますと助かります。
guest

回答2

0

col13に修正、

append ではなく concat を使うとよいかもしれません(その際に axis=1 を指定します)。

python

1df1 = pd.concat([df1, df2['col13']], axis=1)

投稿2022/01/21 13:52

編集2022/01/21 13:54
melian

総合スコア19798

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

df2の'col13'列をdf1に新しい列として追加してはどうでしょうか.

Python

1df1['df2_col13 or 別の名前でも'] = df2['col13']

投稿2022/01/21 13:52

ATuu

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FM_TOWNS

2022/01/21 14:05

df1["new_col13"]=df2['col13'] で、   col1 col2 col3 new_col13 0 3 10 500 500 1 2 30 100 100 2 4 40 300 300 3 1 20 200 200 となリました。 データフレーム間、結合という言葉に思い込みがあり、ネットでいろいろと調べ周り、結局、ここに泣きつきましたが、仰せのデータフレームの列の追加でした。 これで続きの作業に入れます。 本当に、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問