使用多种分隔符拆分列

Splitting a column with more than one kind of separators

我正在处理一个数据集,我需要将其中一列拆分为其他三列。 本栏目是这样的:

df2['Measurements'].value_counts(normalize=True)
6.9x6.87x4.16     0.000834
5.42x5.39x3.36    0.000834
6.83x6.86x4.23    0.000834
5.43x5.4x3.38     0.000834
6.11x6.16x3.85    0.000834
                    ...   
5.05x5.07x3.01    0.000278
6.46x6.43x3.94    0.000278
7.7x7.73x4.78     0.000278
8.37x8.41x5.19    0.000278
6.3x6.26x4.1      0.000278
Name: Measurements, Length: 3450, dtype: float64

然后我尝试将其拆分为 'X',就像我在下面使用的代码一样:

df2[['Length-mm','Width-mm','Depth-mm']] = df2['Measurements'].str.split('x', n=2, expand=True)

但是当我检查新列中的值计数时,它告诉我除了“x”之外还有其他分隔符。

df2['Length-mm'].value_counts(normalize=True)
6.44              0.008058
6.8               0.006946
6.47              0.006946
6.43              0.006669
6.48              0.006669
                    ...   
5.57*5.55*3.58    0.000278
7.85*7.89*4.78    0.000278
8.98              0.000278
5.54*5.51         0.000278
4.62              0.000278
Name: Length-mm, Length: 722, dtype: float64

看到有些行有三个值,用“*”分隔,所以我想创建这些新列并知道是否可行,如果可行,如何使用多个分隔符进行拆分。

您可以在 str.split 中使用正则表达式。你的行应该是:

df2[['Length-mm','Width-mm','Depth-mm']] = df2['Measurements'].str.split(r'x|\*', n=2, expand=True)

请注意,您可以使用 |(这是正则表达式语法中的 OR)连接任意数量的分隔符。 * 前面必须有 \,因为它是正则表达式语法中的特殊字符。