将列值分为多行和熊猫列

时间:2019-12-28 16:50:57

标签: python pandas

我正遇到熊猫问题。输入数据为单列:

 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)。

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

2 个答案:

答案 0 :(得分:5)

首先在**上拆分,得到Series.str.splitCol2的{​​{1}}。

然后,我们使用DataFrame.explode为每个元素新建一行以创建expand=True

注意:这需要Col1

pandas >= 0.25.0

答案 1 :(得分:3)

开头
df = pd.DataFrame({"mixed_column": ["20_5, 20_5**1", "20_7**9", "20_4, 40_4, 15_4**2"]})
df_split = df.mixed_column.str.rsplit("**").apply(pd.Series)
df_split[0] = df_split.apply(lambda x: x[0].split(", "), axis=1)
df_split = df_split.explode(0)

给你

      0  1
0  20_5  1
0  20_5  1
1  20_7  9
2  20_4  2
2  40_4  2
2  15_4  2