pandas 在Dataframe中将单个列拆分为4个不同的列

oxf4rvwz  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(176)

我只需要将一列 Dataframe 拆分为4个不同的列。我尝试了几个步骤,但没有工作。
数据1:

Dump               
12525 2 153898 Winch
24798 1 147654 Gear
65116 4        Screw 
46456 1        Rowing
46563 5        Nut

预期值1:

Item  Qty  Part_no  Description             
12525  2    153898   Winch
24798  1    147654   Gear
65116  4             Screw 
46456  1             Rowing
46563  5             Nut

数据2:

Dump               
12525 2 153898 Winch Gear
24798 1 147654 Gear nuts
65116 X        Screw bolts
46456 1        Rowing rings
46563 X        Nut

预期2:

Item  Qty  Part_no  Description             
12525  2    153898   Winch Gear
24798  1    147654   Gear nuts
65116  X             Screw bolts
46456  1             Rowing rings
46563  X             Nut

我尝试了下面的代码

data_df[['Item','Qty','Part_no','Description']] = data_df["Dump"].str.split(" ", 3, expand=True)

and got the output like 

 Item  Qty  Part_no  Description             
12525  2    153898   Winch
24798  1    147654   Gear
65116  4    Screw 
46456  1    Rowing
46563  5    Nut

有什么建议吗,我怎么能解决这个问题?

j2qf4p5b

j2qf4p5b1#

使用str.extract

data_df[['Item','Qty','Part_no','Description']] = \
data_df['Dump'].str.extract(r'(\d+)\s+(\d+)\s+(\d*)\s*(\w+)')

输出量:

Dump   Item Qty Part_no Description
0   12525 2 153898 Winch  12525   2  153898       Winch
1    24798 1 147654 Gear  24798   1  147654        Gear
2   65116 4        Screw  65116   4               Screw
3  46456 1        Rowing  46456   1              Rowing
4     46563 5        Nut  46563   5                 Nut

相关问题