我正遇到熊猫问题。输入数据为单列:
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)。
很抱歉,如果这是一个菜鸟问题。任何提示一定会帮助我。谢谢,并祝大家节日快乐。
答案 0 :(得分:5)
首先在**
上拆分,得到Series.str.split
和Col2
的{{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