根据熊猫中数据框的另一列的值添加一列

时间:2019-07-06 14:49:44

标签: python pandas

这是我的数据框:

df = pd.DataFrame({'symbol': ['msft', 'amd', 'bac', 'citi'], 'close': [100, 30, 70, 80]})

我想添加另一个称为sector的列,该列检查symbol的值并添加我想要的值(tech代表amdmsft例如)。

我想要的结果如下:

   symbol  close   sector
  0  msft    100     tech
  1   amd     30     tech
  2   bac     70     bank
  3  citi     80     bank

2 个答案:

答案 0 :(得分:3)

如果扇区-符号关系是直接查找,则可以使用以下内容:

symbol_sector = {
    'amd': 'tech',
    'msft': 'tech',
    'bac': 'bank',
    'citi': 'bank'
}

df['sector'] = df['symbol'].map(symbol_sector)

如果您的关系是1到N(一个扇区包含多个符号),则可以按以下方式创建symbol_sector

sector_symbol = { 
   'tech': {'msft', 'amd'}, 
   'bank': {'bac',  'city'}, 
}

symbol_sector = {
    symbol: sector
    for sector, symbols in sector_symbol.items()
    for symbol in symbols
}

答案 1 :(得分:1)

启发式:

def assign_sector(sym): 
    if sym in ['msft', 'amd']: 
        return 'tech'
    return 'bank'

其次:

df['sector'] = df['symbol'].apply(assign_sector)

apply函数将参数assign_sector中给定的函数应用于pd.Series df['symbol']中的每个值。然后您可以将其插入df['sector']中,以创建新列。