熊猫数据框中的分割行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了熊猫数据框中的分割行相关的知识,希望对你有一定的参考价值。

我坚持如何按行划分熊猫数据框的问题,

我具有类似的数据框,其列的值之间用 r n分隔并且它们在一个单元格中,

    Color                              Shape  Price
0  Green  Rectangle
Triangle
Octangle     10
1   Blue              Rectangle
Triangle     15 

并且我需要将此单元格划分为其他单元格的值与其他列相同的多个单元格,例如此处

   Color      Shape  Price
0  Green  Rectangle     10
1  Green   Triangle     10
2  Green   Octangle     10
3   Blue  Rectangle     15
4   Blue    Tringle     15

如何做得更好?

答案

您可以做:

df["Shape"]=df["Shape"].str.split("
")
print(df.explode("Shape").reset_index(drop=True))

输出:

   Color    Shape   Price
0   Green   Rectangle   10
1   Green   Triangle    10
2   Green   Octangle    10
3   Blue    Rectangle   15
4   Blue    Triangle    15
另一答案

首先,您需要用空白将Shape分开,这将为您提供形状列表。然后,使用df.explode解压缩列表并为每个列表创建新行

df["Shape"] = df.Shape.str.split()
df.explode("Shape")
另一答案

如前所述,str.split()后跟explode是有帮助的。如果您未使用Pandas 0.25,则可以在以后使用melt

(pd.concat( (df.Shape.str.split('
', expand=True), 
            df[['Color','Price']]),
          axis=1)
   .melt(id_vars=['Color', 'Price'], value_name='Shape')
)

输出:

   Color  Price variable      Shape
0  Green     10        0  Rectangle
1   Blue     15        0  Rectangle
2  Green     10        1   Triangle
3   Blue     15        1   Triangle
4  Green     10        2   Octangle
5   Blue     15        2       None

以上是关于熊猫数据框中的分割行的主要内容,如果未能解决你的问题,请参考以下文章

将列值分配给熊猫数据框中的唯一行[重复]

从熊猫数据框中的组内选择特定行

熊猫数据框中的行排序和聚合

如何使用熊猫更改数据框中的特定行值? [复制]

对分组的熊猫数据框中的行求和并返回 NaN

根据熊猫中多列中的值从数据框中选择行