熊猫将带有列表的列扩展为多列

时间:2020-11-05 17:15:55

标签: pandas

我想将包含列表的列扩展/转换为多列:

df = pd.DataFrame({'a':[1,2], 'b':[[11,22],[33,44]]})
# I want:
pd.DataFrame({'a':[1,2], 'b1':[11,33], 'b2':[22,44]})

3 个答案:

答案 0 :(得分:2)

您可以在.tolist()列上使用"b"进行扩展,然后将其分配回数据框并摆脱原来的"b"列:

df = pd.DataFrame({'a':[1,2], 'b':[[11,22],[33,44]]})
df[["b1", "b2"]] = df["b"].tolist()

df = df.drop("b", axis=1) # alternatively: del df["b"]

print(df)
   a  b1  b2
0  1  11  22
1  2  33  44

答案 1 :(得分:2)

发送列.tolist并创建DataFrame,然后重新加入其他列。

df = pd.concat([df.drop(columns='b'), pd.DataFrame(df['b'].tolist(), index=df.index).add_prefix('b')], 
               axis=1)

   a  b0  b1
0  1  11  22
1  2  33  44

答案 2 :(得分:1)

df = pd.DataFrame({'a':[1,2], 'b':[[11,22],[33,44]]})

df["b1"] = df["b"].apply(lambda cell: cell[0])
df["b2"] = df["b"].apply(lambda cell: cell[1])
df[["a", "b1", "b2"]]