348

2 つのシリーズがs1ありs2、同じ (連続していない) インデックスがあります。を結合s1s2て DataFrame の 2 つの列にし、インデックスの 1 つを 3 番目の列として保持するにはどうすればよいですか?

4

9 に答える 9

503

concatこれは良い方法だと思います。それらが存在する場合は、シリーズの名前属性を列として使用します (そうでない場合は、単に番号を付けます)。

In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')

In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')

In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
   s1  s2
A   1   3
B   2   4

In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
  index  s1  s2
0     A   1   3
1     B   2   4

注: これは 2 シリーズ以上に拡張されます。

于 2013-08-05T15:57:31.060 に答える
19

コード例:

a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})

Pandas では、値として a を、キーとして列名を使用して aDataFrameから adictを作成できます。値として aSeriesが見つかると、インデックスをインデックスの一部として使用します。このデータ アライメントは、Pandas の主な利点の 1 つです。したがって、他のニーズがない限り、新たに作成されたものには重複した価値があります。上記の例では、 は と同じデータを持っています。SeriesSeriesDataFrameDataFramedata['idx_col']data.index

于 2013-08-05T15:50:25.873 に答える
10

私はあなたの質問を完全に理解しているかどうかわかりませんが、これはあなたがしたいことですか?

pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)

index=s1.indexここでも必要ありません)

于 2013-08-05T15:51:19.830 に答える