python - 在熊猫中将列值拆分为多行和多列
问题描述
我面临熊猫的问题。输入数据是单列:
MixedColumn
-------------
20_5, 20_5**1
20_7**9
20_4, 40_4, 15_4**2
我想将其拆分并将其转换为以下内容:
Col1 Col2
--------------
20_5 1
20_5 1
20_7 9
20_4 2
40_4 2
15_4 2
逻辑基于逗号(如果存在)拆分每个行项目(20_5、20_5 ),并将它们放置在同一列的下一行(Col1)中。以及基于 ** 拆分每个行项目(**1)并将它们与单独列 (Col2) 中的各个值相关联。
对不起,如果这是一个菜鸟问题。任何提示肯定会帮助我。谢谢并祝大家节日快乐。
解决方案
首先拆分以**
获取and 。Col2
Series.str.split
expand=True
然后我们使用DataFrame.explode
为每个要创建的元素创建一个新行Col1
:
注意:这需要pandas >= 0.25.0
df[['Col1', 'Col2']] = df['MixedColumn'].str.split('\*\*', expand=True)
df = df.assign(Col1=df['Col1'].str.split(', ')).explode('Col1').drop(columns='MixedColumn')
Col1 Col2
0 20_5 1
0 20_5 1
1 20_7 9
2 20_4 2
2 40_4 2
2 15_4 2
推荐阅读
- pyspark - Amazon EMR 只使用一个核心节点,但我有两个核心节点
- sap-cloud-sdk - CF 上使用 Cloud SDK 进行主体传播的服务间通信指南
- python-3.x - python 声明值的简单方法
- html - 网页转发到域
- c++ - 是否有任何简单的方法可以从用户那里获取整数输入来填充向量并提供在 C++ 中停止的选项?
- python - 在 DataFrame Python 上一次遍历行和列的表单
- python - 使用 CX_freeze 为我的 exe 文件添加图标
- sql - SUM (CASE WHEN A=B THEN COUNT*X) 语句
- apache-kafka - 带有可选记录的 AVRO 模式
- python-3.x - 如何从这种格式行中获取术语?