回答:
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つ以上のシリーズに拡張されます。
pd.concat([list_of_dataframes])
new_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
両方に同じインデックスがある場合、なぜ.to_frameを使用しないのですか?
> = v0.23
a.to_frame().join(b)
< v0.23
a.to_frame().join(b.to_frame())
パンダは、連続して渡されたこれらを自動的に整列させ、結合インデックスを作成します。これらはここでも同じです。reset_index
インデックスを列に移動します。
In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])
In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])
In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]:
index s1 s2
0 1 -0.176143 0.128635
1 2 -1.286470 0.908497
2 4 -0.995881 0.528050
3 5 0.402241 0.458870
4 6 0.380457 0.072251
コード例:
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})
パンダは、作成することができますDataFrame
からしdict
てSeries
値とキーとしてカラム名として。Series
値としてa が見つかるSeries
と、DataFrame
インデックスの一部としてインデックスを使用します。このデータ調整は、パンダの主要な特典の1つです。したがって、他のニーズがない限り、新しく作成されたDataFrame
値は重複しています。上記の例でdata['idx_col']
は、はと同じデータを持っていdata.index
ます。
これに答えてもいいですか。
シリーズをデータフレームに変換する背後にある基本は、
1.概念レベルでは、データフレームのすべての列はシリーズです。
2.そして、すべての列名はシリーズにマップするキー名です。
上記の2つの概念を念頭に置いておくと、シリーズをデータフレームに変換する多くの方法を考えることができます。簡単な解決策の1つは次のようになります。
ここで2つのシリーズを作成
import pandas as pd
series_1 = pd.Series(list(range(10)))
series_2 = pd.Series(list(range(20,30)))
必要な列名だけで空のデータフレームを作成する
df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])
マッピングの概念を使用してデータフレーム内にシリーズ値を配置する
df['Column_name#1'] = series_1
df['Column_name#2'] = series_2
今すぐ結果を確認する
df.head(5)