2017-07-01 17 views
1

私の質問は、ストリング値をリストに分割し、各リスト項目を新しい列に割り当てるという同じ目的を達成するためのさまざまなアプローチに対応する、 。ここではポストです:Pandas DataFrame, how do i split a column into twoパンダのDataFrame - シリーズの列を複数の列に分割する

DF:

      GDP 
Date       
Mar 31, 2017 19.03 trillion 
Dec 31, 2016 18.87 trillion 

スクリプト1 +出力に含ま:

>>> df['GDP'], df['Units'] = df['GDP'].str.split(' ', 1).str 
>>> print(df) 

       GDP  Units 
Date       
Mar 31, 2017 19.03 trillion 
Dec 31, 2016 18.87 trillion 

スクリプト2 +出力:

>>> df[['GDP', 'Units']] = df['GDP'].str.split(' ', 1, expand=True) 
>>> print(df) 

       GDP  Units 
Date       
Mar 31, 2017 19.03 trillion 
Dec 31, 2016 18.87 trillion 

スクリプト3 +出力:

>>> df['GDP'], df['Units'] = df['GDP'].str.split(' ', 1, expand=True) 
>>> print(df) 

       GDP Units 
Date      
Mar 31, 2017 0  1 
Dec 31, 2016 0  1 

誰でも何が起こっているのか説明できますか?スクリプト3が出力でこれらの値を生成するのはなぜですか?この

df['GDP'].str.split(' ', 1) 

0 [19.03, trillion] 
1 [18.87, trillion] 
Name: GDP, dtype: object 

を見て

答えて

1

レッツ・スタートは、それは一連のリストを生成します。しかし、pd.Series.strという別名の文字列アクセサーを使用すると、直感的なPythonリストの索引付けによって、これらの埋め込みリストの第1、第2、...部分にアクセスすることができます。

df['GDP'].str.split(' ', 1).str[0] 

Date 
Mar 31, 2017 19.03 
Dec 31, 2016 18.87 
Name: GDP, dtype: object 

それとも

df['GDP'].str.split(' ', 1).str[1] 

Date 
Mar 31, 2017 trillion 
Dec 31, 2016 trillion 
Name: GDP, dtype: object 

我々は2つの要素リスト、split(' ', 1)に分割あれば、我々は反復可能

a, b = df['GDP'].str.split(' ', 1).str 

a 

Date 
Mar 31, 2017 19.03 
Dec 31, 2016 18.87 
Name: GDP, dtype: object 

そして

として追加 strからの戻りオブジェクトを扱うことができます
b 

Date 
Mar 31, 2017 trillion 
Dec 31, 2016 trillion 
Name: GDP, dtype: object 

[OK]を、私たちはしかし

df['GDP'], df['Units'] = df['GDP'].str.split(' ', 1).str 

を開梱反復可能、これを活用することにより、2つの新しい列の作成を短くカットすることができ、我々は新しいデータフレームの列にexpandに私たちの新しいリストをパラメータを渡すことができ

df['GDP'].str.split(' ', 1, expand=True) 

        0   1 
Date       
Mar 31, 2017 19.03 trillion 
Dec 31, 2016 18.87 trillion 

今すぐ別のデータフレームの新しい列にデータフレームを割り当てることができます

df[['GDP', 'Units']] = df['GDP'].str.split(' ', 1, expand=True) 
我々は

df['GDP'], df['Units'] = df['GDP'].str.split(' ', 1, expand=True) 

行うとき

しかし、df['GDP'].str.split(' ', 1, expand=True)の戻り値が展開されますと、それらの結果は、単純に列の値です。上に表示されている場合は、01であることがわかります。この場合、0は列df['GDP']に割り当てられ、1は列df['Units']

に割り当てられます。
関連する問題