コンマ/スペースの分離に基づいて、列を複数の列に分割しようとしています。
私のデータフレームは現在のように見えます
KEYS 1
0 FIT-4270 4000.0439
1 FIT-4269 4000.0420, 4000.0471
2 FIT-4268 4000.0419
3 FIT-4266 4000.0499
4 FIT-4265 4000.0490, 4000.0499, 4000.0500, 4000.0504,
をお願いします
KEYS 1 2 3 4
0 FIT-4270 4000.0439
1 FIT-4269 4000.0420 4000.0471
2 FIT-4268 4000.0419
3 FIT-4266 4000.0499
4 FIT-4265 4000.0490 4000.0499 4000.0500 4000.0504
私のコードは現在KEYS列を削除していますが、その理由はわかりません。誰かが問題を改善したり修正したりできますか?
v = dfcleancsv[1]
#splits the columns by spaces into new columns but removes KEYS?
dfcleancsv = dfcleancsv[1].str.split(' ').apply(Series, 1)
他の誰かが単一の列(値で区切られている)を複数の列に分割したい場合-これを試してください:
series.str.split(',', expand=True)
これは私が探しているここに来た質問に答えました。
EdChum's データフレームに分割された列を追加するコードを含むコード。
pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)
Edchumsの回答を使用
pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)
変数を代入することで解決できました。
dfcleancsv = pd.concat([dfcleancsv['KEYS'], dfcleancsv[1].str.split(', ', expand=True)], axis=1)
OPには、可変数の出力列がありました。出力列の数が固定されている特定の場合、結果の列に名前を付ける別のエレガントなソリューションは、複数の割り当てを使用することです
サンプルデータセットをロードし、organ_dimension
と呼ばれる変数を取得するために長い形式に変更します。
import seaborn
iris = seaborn.load_dataset('iris')
df = iris.melt(id_vars='species', var_name='organ_dimension', value_name='value')
organ_dimension
セパレーターに基づいて、_
変数を2つの変数organ
およびdimension
に分割します。 this answer "列を2列に分割する方法は?"
df['organ'], df['dimension'] = df['organ_dimension'].str.split('_', 1).str
df.head()
Out[10]:
species organ_dimension value organ dimension
0 setosa sepal_length 5.1 sepal length
1 setosa sepal_length 4.9 sepal length
2 setosa sepal_length 4.7 sepal length
3 setosa sepal_length 4.6 sepal length
4 setosa sepal_length 5.0 sepal length
多分これはうまくいくはずです:
df = pd.concat([df['KEYS'],df[1].apply(pd.Series)],axis=1)