2 つのシリーズがs1
ありs2
、同じ (連続していない) インデックスがあります。を結合s1
しs2
て DataFrame の 2 つの列にし、インデックスの 1 つを 3 番目の列として保持するにはどうすればよいですか?
446292 次
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 つです。したがって、他のニーズがない限り、新たに作成されたものには重複した価値があります。上記の例では、 は と同じデータを持っています。Series
Series
DataFrame
DataFrame
data['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 に答える