首页 > 解决方案 > 在熊猫中将列值拆分为多行和多列

问题描述

我面临熊猫的问题。输入数据是单列:

 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) 中的各个值相关联。

对不起,如果这是一个菜鸟问题。任何提示肯定会帮助我。谢谢并祝大家节日快乐。

标签: pythonpandas

解决方案


首先拆分以**获取and 。Col2Series.str.splitexpand=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

推荐阅读