我有一个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
关于如何实现此目标的任何建议?我还看到了有关如何取消嵌套列的其他建议,但它仅适用于一维数组,不适用于我的情况。
答案 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