シリーズとデータフレームを結合する方法 質問する

シリーズとデータフレームを結合する方法 質問する

情報をお探しでしたらインデックスでDataFrameと をマージする方法Series、ご覧くださいこの答え

OPの当初の意図は、シリーズ要素を別の DataFrame の列として割り当てる方法この答えを知りたい方は、受け入れられた回答EdChum 著。


私が思いつく最高のものは

df = pd.DataFrame({'a':[1, 2], 'b':[3, 4]})  # see EDIT below
s = pd.Series({'s1':5, 's2':6})

for name in s.index:
    df[name] = s[name]

   a  b  s1  s2
0  1  3   5   6
1  2  4   5   6

より良い構文/より速い方法を提案してくれる人はいますか?

私の試み:

df.merge(s)
AttributeError: 'Series' object has no attribute 'columns'

そして

df.join(s)
ValueError: Other Series must have a name

編集最初に投稿された 2 つの回答では、私の質問の問題点が強調されているので、次のものを使用して作成してくださいdf

df = pd.DataFrame({'a':[np.nan, 2, 3], 'b':[4, 5, 6]}, index=[3, 5, 6])

最終結果

    a  b  s1  s2
3 NaN  4   5   6
5   2  5   5   6
6   3  6   5   6

ベストアンサー1

アップデート
v0.24.0以降では、マージSeries に名前が付けられている限り、DataFrame および Series に適用されます。

df.merge(s.rename('new'), left_index=True, right_index=True)
# If series is already named,
# df.merge(s, left_index=True, right_index=True)

今では、SeriesをDataFrameに変換するには、フレームへ移動()したがって(インデックスで結合する場合):

df.merge(s.to_frame(), left_index=True, right_index=True)

おすすめ記事