Pandas 将包含列表的列拆分为多个列
在本文中,我们将介绍如何使用Pandas将包含列表的列拆分为多个列。这种情况可能会在数据中出现,例如,我们有一列包含多种颜色,但我们需要对每种颜色进行操作或分析。
阅读更多:
Pandas 教程
首先,我们需要准备一个包含列表列的数据集。对于本文,我们可以使用以下代码来创建一个包含两列的数据集,其中一列包含名称,另一列包含颜色的列表。
import pandas as pd
data = {'Name': ['John', 'Paul', 'George', 'Ringo'],
'Colors': [['Red', 'Green'], ['Blue'], ['Purple', 'Green', 'Yellow'], ['Yellow']]}
df = pd.DataFrame(data)
在上述代码中,我们使用字典创建了一个数据,其中包含了两个键-值对,一个键为姓名,另一个键为颜色,它们分别代表数据集中的两列。颜色列包含不同数量的颜色,其中有些人可能有多种颜色,而有些人只有一种颜色。
我们使用Pandas的DataFrame函数从上述数据中创建了一个数据帧。现在,我们有一个包含两个列的数据框,其中一列包含姓名,另一列包含颜色的列表。
接下来,我们需要使用Pandas将颜色列拆分成多个列。在这里,我们可以使用apply函数对数据的每一行使用自定义函数来拆分列。我们可以使用以下代码来将颜色列拆分成三列。
def split_colors(row):
return row['Colors'][0], row['Colors'][1], row['Colors'][2]
except:
return (None, None, None)
df[['Color 1', 'Color 2', 'Color 3']] = df.apply(split_colors, axis=1, result_type="expand")
在上述代码中,我们定义了一个自定义函数split_colors。在该函数中,我们尝试访问每一行的颜色列的前三项。如果有一个或多个项不存在,则设置其为None。在此之后,我们使用Pandas的apply函数将该函数作用于数据集的每一行,并使用新的列名“Color 1”,“Color 2”和“Color 3”拆分颜色列。
现在,我们有一个拆分颜色的数据框,其中包含新的列Color 1,Color 2和Color 3。以下是我们拆分后的数据框的样子:
Colors
Color 1
Color 2
Color 3