如何在数据框的列的单元格内嵌套2x2数组?

时间:2019-03-26 12:45:56

标签: python pandas

我有一个DataFrame,在它的一列中,每个单元格内有2x2 np.arrays。我正在尝试提取这些数组以与原始Dataframe合并。

假设我有以下df:

df=pd.DataFrame({'A':[101, 202],'B':[ [[1,2], [3,4]] ,[[5,6], [7,8]] ] })

我需要将这个df转换成这样的东西:

A, B_1, B_2
101, 1, 2
101, 3, 4
202, 5, 6
202, 7, 8

关于如何实现此目标的任何建议?我还看到了有关如何取消嵌套列的其他建议,但它仅适用于一维数组,不适用于我的情况。

2 个答案:

答案 0 :(得分:1)

df  =df.set_index('A').B.apply(pd.Series).stack().reset_index().rename(columns={0:'B'})
df1 =pd.DataFrame(df.B.values.tolist()).add_prefix('B_')
pd.concat([df['A'], df1], axis = 1)

答案 1 :(得分:0)

concat列中的DataFrame使用带有B的列表理解:

dcomp = {k:pd.DataFrame(v) for k, v in df.pop('B').items()}
df1 = (pd.concat(dcomp)
         .reset_index(level=1, drop=True)
         .rename(columns=lambda x: x+1)
         .add_prefix('B_'))

df = df.join(df1).reset_index(drop=True)
print (df)
     A  B_1  B_2
0  101    1    2
1  101    3    4
2  202    5    6
3  202    7    8