首页 > 解决方案 > 如何在“应用(pd.Series)”之后将新列插入原始熊猫数据框

问题描述

我有带有过多列的熊猫数据框。一列包含字典值。
我可以用“.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))

标签: pythonpandas

解决方案


您可以将多个列分配给 DataFrame:

df[result.columns] = result

或者您可以使用DataFrame.join

df = df.join(result)

从技术上讲,您还可以使用concat

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

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

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

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

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

Pandas 官方文档没有一个统一的资源来理解“索引”数据模型。但是,找到了这篇博文,它似乎涵盖了您需要了解的大部分内容。


推荐阅读