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,其中名为的列包含值列表:

 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]

我们可以使用以下语法创建一个新的 DataFrame,其中列分为两个新列,称为game1game2

 #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

最终结果是一个 DataFrame,其中列表的原始列现在分为两个新列,称为game1game2

注意:如果您的列表列在每个列表中包含奇数个值,则在将列表拆分为列时,pandas 将简单地用NaN值填充缺失值。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何打印没有索引的 Pandas DataFrame
如何显示 Pandas DataFrame 中的所有行
如何检查 Pandas DataFrame 中所有列的类型

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注