とインデックスをマージする方法
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
df
とs
、この回答は、質問で要求された結果ではなく、空のデータフレームを返します。インデックスで一致させたくありません。のs
すべての行に値をブロードキャストしますdf
。