如何在"apply(pd.Series)"后将新列插入原始熊猫数据框



我有一个包含大量列的pandas数据框架。一列包含字典值。
我可以"explode".map(eval)apply(pd.Series)">
我需要这些结果列插入到原始df。
我不知道怎么做。在所有的

result = df['dic_column'].map(eval).apply(pd.Series)
result
A   B   C   D   E
1   0   0   0   1   0
2   1   9   0   9   0
3   0   0   0   1   0
4   1   9   0   9   0
5   0   0   0   2   

想要的结果:

df    
user_id    og_column1    og_column2    A    B    C    D    E
1          valuey        valuey        0    0    0    1    0
2          valuex        valuex        1    9    0    9    0
...
编辑:


解决方案:回归。

result = df.join(df['dic_column'].map(eval).apply(pd.Series))

可以为一个DataFrame分配多个列:

df[result.columns] = result

或者您可以使用DataFrame.join:

df = df.join(result)

技术上你也可以使用concat:

df = pd.concat((df, result), axis='columns')

以上都是非常相似的操作。

它们都执行join(在关系代数意义上)在数据帧的行标签上。

在Pandas术语中,行标签是"索引"。数据帧的。默认情况下,如果没有显式创建或分配索引,则行标签只是一个整数范围,对应于行数字。行号和行标签之间的区别在于,大多数Pandas操作都会保留行标签,而行号只是行号。

所以如果你打乱一个数据帧,索引也会被打乱。除此之外,这个特性允许您将数据重新连接到它的源,即使在进行了一些相当复杂的数据操作之后。

官方Pandas文档没有一个统一的资源来理解"索引"。数据模型。然而,找到这篇博客文章,它似乎涵盖了你需要知道的大部分内容。

Henry Ecker在评论中给出了解决方案

我们可以把结果连接起来。

result = df.join(df['dic_column'].map(eval).apply(pd.Series))

最新更新