Pandas: リストの列を複数の列に分割する方法


次の基本構文を使用して、リストの列を pandas DataFrame の複数の列に分割できます。

 #split column of lists into two new columns
split = pd. DataFrame (df[' my_column ']. to_list (), columns = [' new1 ',' new2 '])

#join split columns back to original DataFrame
df = pd. concat ([df, split], axis= 1 )

次の例は、この構文を実際に使用する方法を示しています。

例: Pandas でリストの列を複数の列に分割する

次の pandas DataFrame があり、 pointsという列に値のリストが含まれているとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['Mavs', 'Heat', 'Kings', 'Suns'],
                   ' points ': [[99, 105], [94, 113], [99, 97], [87, 95]]})

#view DataFrame
print (df)

    team points
0 Mavs [99, 105]
1 Heat [94, 113]
2 Kings [99, 97]
3 Suns [87, 95]

次の構文を使用して、 Points列がgame1game2という 2 つの新しい列に分割された新しい DataFrame を作成できます。

 #split column of lists into two new columns
split = pd. DataFrame (df[' my_column ']. to_list (), columns = [' new1 ',' new2 '])

#view DataFrame
print (split)

   game1 game2
0 99 105
1 94 113
2 99 97
3 87 95

必要に応じて、 concat()関数を使用して、この分割された DataFrame を元の DataFrame に結合できます。

 #join split columns back to original DataFrame
df = pd. concat ([df, split], axis= 1 ) 

#view updated DataFrame
print (df)

    team points game1 game2
0 Mavs [99, 105] 99 105
1 Heat [94, 113] 94 113
2 Kings [99, 97] 99 97
3 Suns [87, 95] 87 95

最後に、必要に応じて、元のポイント列を DataFrame から削除できます。

 #drop original points column
df = df. drop (' points ', axis= 1 )

#view updated DataFrame
print (df)

    team game1 game2
0 Mavs 99 105
1 Heat 94 113
2 Kings 99 97
3 Suns 87 95

最終結果は、リストの元のポイント列がgame1game2という 2 つの新しい列に分割された DataFrame です。

: リストの列に各リストに奇数の値が含まれている場合、パンダはリストを列に分割するときに、欠落している値をNaN値で単純に埋めます。

追加リソース

次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。

インデックスなしで Pandas DataFrame を印刷する方法
Pandas DataFrame のすべての行を表示する方法
Pandas DataFrame のすべての列の型を確認する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です