【问题标题】:Creating new dataframe column using string filter of other column使用其他列的字符串过滤器创建新的数据框列
【发布时间】:2021-08-02 10:34:50
【问题描述】:

下面是列名为“地址”的数据框。我想使用地址列中的过滤器创建一个带有特定字符串的单独列“城市”。

df1
Serial_No  Address 
1          India Gate Delhi
2          Delhi Redcross Hospital
3          Tolleyganj Bus Stand Kolkata
4          Kolkata Howrah
5          Katra Jammu

下面是我正在使用的脚本

descr = []
col = 'City'
for col in df:
    if np.series(df[col]= df[df[col].str.contains('Delhi ', na=False)]:
        desc = 'Delhi'
    elif np.series(df[col]= df[df[col].str.contains('Kolkata ', na=False)]:
        desc = 'Kolkata'
    else:
        desc = 'None'

下面是预期的输出

df1
Serial_No  Address                        City
1          India Gate Delhi               Delhi
2          Delhi Redcross Hospital        Delhi
3          Tolleyganj Bus Stand Kolkata   Kolkata
4          Kolkata Howrah                 Kolkata
5          Katra Jammu                    None

【问题讨论】:

    标签: python pandas dataframe if-statement append


    【解决方案1】:

    试试这个

    import pandas as pd
    df1=pd.DataFrame([[1,'India Gate Delhi'],[2,'Delhi Redcross Hospital'],[3,'Tolleyganj Bus Stand Kolkata'],[4,'Kolkata Howrah'],[5,'Katra Jammu']],columns=['Serial_No','Address'])
    print(df1)
    
    def f(df1):
        if 'Delhi' in df1['Address']:
            val = 'Delhi'
        elif 'Kolkata' in df1['Address']:
            val = 'Kolkata'
        else:
            val = 'None'
        return val
    df1['City'] = df1.apply(f, axis=1)
    print(df1)
    

    【讨论】:

      【解决方案2】:

      让我们试试str.extract

      df['new'] = df.Address.str.extract(('(Delhi|Kolkata)'))[0]
      

      【讨论】:

        猜你喜欢
        • 2023-01-07
        • 2022-07-07
        • 2017-01-03
        • 2013-11-13
        • 1970-01-01
        • 1970-01-01
        • 2023-01-31
        • 1970-01-01
        • 2019-04-28
        相关资源
        最近更新 更多