【问题标题】:Python pandas to add a new column with splitPython pandas 添加一个带有拆分的新列
【发布时间】:2021-06-28 11:12:14
【问题描述】:
import pandas as pd
df = pd.read_csv('911.csv')

df['Title'].head(5)

0     EMS: BACK PAINS/INJURY
1    EMS: DIABETIC EMERGENCY
2        Fire: GAS-ODOR/LEAK
3     Traffic: CARDIAC EMERGENCY
4             Fire: DIZZINESS

在 ':' 之前使用值创建一个新列 结果:

     Title                           Reason
0    EMS: BACK PAINS/INJURY          EMS
1    EMS: DIABETIC EMERGENCY         EMS
2    Fire: GAS-ODOR/LEAK             Fire
3    Traffic: CARDIAC EMERGENCY      Traffic
4    Fire: DIZZINESS                 Fire

labda 的一种解决方案:

df['Reason'] = df['title'].apply(lambda title: title.split(':')[0])

你能推荐没有 lambda 的吗?

【问题讨论】:

    标签: python-3.x pandas dataframe split


    【解决方案1】:

    试试:

    df["Reason"] = df["Title"].str.split(":", n=1).str[0]
    print(df)
    

    打印:

                            Title   Reason
    0      EMS: BACK PAINS/INJURY      EMS
    1     EMS: DIABETIC EMERGENCY      EMS
    2         Fire: GAS-ODOR/LEAK     Fire
    3  Traffic: CARDIAC EMERGENCY  Traffic
    4             Fire: DIZZINESS     Fire
    

    【讨论】:

      【解决方案2】:

      使用str.extract的另一种方法

      df['Reason'] = df['Title'].str.extract('(.*):')[0] 
      #if you only want the `:` at the start of a sentence then use ^
      # df['Title'].str.extract('^(.*):')[0] 
      
                              Title   Reason
      0      EMS: BACK PAINS/INJURY      EMS
      1     EMS: DIABETIC EMERGENCY      EMS
      2         Fire: GAS-ODOR/LEAK     Fire
      3  Traffic: CARDIAC EMERGENCY  Traffic
      4             Fire: DIZZINESS     Fire
      

      【讨论】:

        猜你喜欢
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 2018-07-27
        • 2019-01-09
        • 2023-01-27
        • 2021-03-30
        • 2023-03-26
        相关资源
        最近更新 更多