python - 如何在“应用(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))
解决方案
您可以将多个列分配给 DataFrame:
df[result.columns] = result
或者您可以使用DataFrame.join
:
df = df.join(result)
从技术上讲,您还可以使用concat
:
df = pd.concat((df, result), axis='columns')
以上都是非常相似的操作。
它们都在数据帧的行标签上执行连接(在关系代数意义上)。
在 Pandas 术语中,行标签是数据框的“索引”。默认情况下,如果您没有显式创建或分配索引,则行标签只是一个整数范围,对应于行号。行号和行标签之间的区别在于,标签将在大多数 Pandas 操作中保留,而行号只是行号。
所以如果你打乱一个数据帧,索引也会被打乱。除其他外,即使在进行了一些相当复杂的数据操作之后,此功能也允许您将数据重新连接到其源。
Pandas 官方文档没有一个统一的资源来理解“索引”数据模型。但是,找到了这篇博文,它似乎涵盖了您需要了解的大部分内容。
推荐阅读
- html - 无法在表格中添加下边距
- javascript - 如何重用 AlpineJs 数据?
- c# - 如何向网络上的 *any* 通配符 IP 地址发送 UDP 广播?
- biztalk - 在高音量期间禁用/阻止 BizTalk WCF 发送端口
- matlab - 更改 matlab/simulink 日志文件的保存位置?
- c# - 如何通过声音播放器传递字符串变量?
- c++ - 将 Eigen::Array 类型转换为二维 std::vector
- vb.net - 如何通过在datagridview(vb.net)(sql)中选择一行来自动填充文本框
- .net - 多个前端和后端服务器上的 Kafka 导致一段时间后没有数据返回的问题
- discord.js - Discord discord.js 的角色计数统计信息