<分区>
我不小心用指向错误副本的链接关闭了这个问题。这是正确的:Pandas split column of lists into multiple columns .
假设我有一个数据框,其中一列是列表(已知且长度相同)或元组,例如:
df1 = pd.DataFrame(
{'vals': [['a', 'b', 'c', 'd'],['e','f','g','h']]}
)
即:
vals
0 [a, b, c, d]
1 [e, f, g, h]
我想将“vals”中的值附加到单独的命名列中。我可以通过遍历行来笨拙地做到这一点:
for i in range(df1.shape[0]):
for j in range(0,4):
df1.loc[i, 'vals_'+j] = df1.loc[i, 'vals'] [j]
结果如愿:
vals vals_0 vals_1 vals_2 vals_3
0 [a, b, c, d] a b c d
1 [e, f, g, h] e f g h
是否有更简洁(矢量化)的方式?我尝试使用 [] 但出现错误。
for j in range (0,4)
df1['vals_'+str(j)] = df1['vals'][j]
给出:
ValueError: Length of values does not match length of index
看起来 Pandas 正在尝试将 [] 运算符应用于系列/数据框而不是列内容。