【问题标题】:Pandas Rename one column Values when not equal to multiple conditions熊猫在不等于多个条件时重命名一列值
【发布时间】:2018-12-03 11:11:32
【问题描述】:

我是编码新手,Pandas 非常感谢任何帮助。 我有一列我想重命名值 Locations A-00-UD, A-01-UD, A-02-UD will = Audit, T-00-UD , T-02-UD, T-03-UD will = Transit 和所有其他值将 = 库存。我遇到的问题是将所有其他值命名为 Stock,因为在完整的数据框列中有 15,000 行长,并且有数百个不同的位置我希望命名为 stock。

位置

A-00-UD

A-01-UD

A-02-UD

A-03-UD

T-00-UD

T-01-UD

T-02-UD

T-03-UD

A-45-TR

S-30-RT

D-20-ED

V-00-LM

【问题讨论】:

  • 重命名应该是什么样子还不是很清楚...您已经尝试了什么,为什么没有成功?

标签: python pandas rename


【解决方案1】:

使用numpy.selectisin 进行精确匹配:

m1 = df['Location'].isin(['A-00-UD', 'A-01-UD', 'A-02-UD'])
m2 = df['Location'].isin(['T-00-UD', 'T-02-UD', 'T-03-UD'])

或者用startswith检查第一个值:

m1 = df['Location'].str.startswith('A')
m2 = df['Location'].str.startswith('T')

df['new'] = np.select([m1, m2], ['Audit', 'Transit'], default='Stock')
print (df)
   Location      new
0   A-00-UD    Audit
1   A-01-UD    Audit
2   A-02-UD    Audit
3   A-03-UD    Audit
4   T-00-UD  Transit
5   T-01-UD  Transit
6   T-02-UD  Transit
7   T-03-UD  Transit
8   A-45-TR    Audit
9   S-30-RT    Stock
10  D-20-ED    Stock
11  V-00-LM    Stock

【讨论】:

    【解决方案2】:

    您可以使用字典来映射Location的第一个字符:

    mapper = {'A': 'Audit', 'T': 'Transit'}
    
    df['Location'] = df['Location'].str[0].map(mapper).fillna('Stock')
    

    或者,使用numpy.select,您可以指定条件、每个条件的值和默认值:

    df = pd.DataFrame({'Location': ['A-00-UD', 'T-01-UD', 'S-30-RT']})
    
    conditions = [df['Location'].str[0] == 'A', df['Location'].str[0] == 'T']
    values = ['Audit', 'Transit']
    
    df['Location'] = np.select(conditions, values, 'Stock')
    
    print(df)
    
      Location
    0    Audit
    1  Transit
    2    Stock
    

    【讨论】:

      猜你喜欢
      • 2019-09-15
      • 2020-09-04
      • 2022-11-21
      • 2021-08-15
      • 2021-06-24
      • 2020-05-03
      • 2023-01-11
      • 1970-01-01
      相关资源
      最近更新 更多