如何在Dataframe中将一个包含2x2数组的单元格展开?

4

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

假设我有以下df:

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

我需要将这个数据框转换成以下形式:

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

有什么建议可以帮我完成这个任务吗?我看到其他建议是如何取消嵌套列,但只适用于一维数组而不适用于我的情况。
2个回答

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)

apply(pd.Series) - 它很慢,不要使用它。 - jezrael

0

使用列表推导式和 concat 函数处理来自 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接