创建从现有列熊猫派生的新列

时间:2021-08-01 07:09:52

标签: python pandas dataframe

我需要将 1 列值拆分为 3 列。

df['Campaign name']
0     US_FEMALE_20to30
1        US_MIX_35to45
2     US_FEMALE_20to30
3        US_MIX_35to45
4       US_MALE_30to35
5        US_MIX_35to45

所以最后会是这样

   region   gender   age
0   US      FEMALE   20to30
1   US      MIX      35to45
2   US      FEMALE   20to30
3   US      MIX      35to45
4   US      MALE     30to35
5   US      MIX      35to45

非常感谢

2 个答案:

答案 0 :(得分:1)

使用 str.split 函数。

在 str.split 中,你使用

  1. 在引号中指定分隔符
  2. 'n' 参数指定要拆分的次数
  3. 使用 'expand' 参数将列扩展为新列

然后您在 df 中创建这些列,如下所示

# new data frame with split value columns
new = df["Campaign_name"].str.split("_", n = 2, expand = True)
  
# making separate columns from new data frame
df["region"]= new[0]
df["gender"]= new[1]
df["age"]= new[2]

使用 df.head() 输出

    Campaign_name     region    gender   age
0   US_FEMALE_20to30    US      FEMALE   20to30
1   US_MIX_35to45       US      MIX      35to45
2   US_FEMALE_20to30    US      FEMALE   20to30
3   US_MIX_35to45       US      MIX      35to45
4   US_MALE_30to35      US      MALE     30to35

答案 1 :(得分:0)

带有命名组的

pandas.Series.str.extract 也是一个不错的选择:

df['Campaign name'].str.extract('(?P<region>.*)_(?P<gender>.*)_(?P<age>.*)')

输出:

  region  gender     age
0     US  FEMALE  20to30
1     US     MIX  35to45
2     US  FEMALE  20to30
3     US     MIX  35to45
4     US    MALE  30to35
5     US     MIX  35to45