使用多种分隔符拆分列
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)连接任意数量的分隔符。 *
前面必须有 \
,因为它是正则表达式语法中的特殊字符。
我正在处理一个数据集,我需要将其中一列拆分为其他三列。 本栏目是这样的:
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)连接任意数量的分隔符。 *
前面必须有 \
,因为它是正则表达式语法中的特殊字符。