这是我的数据框:
df = pd.DataFrame({'symbol': ['msft', 'amd', 'bac', 'citi'], 'close': [100, 30, 70, 80]})
我想添加另一个称为sector
的列,该列检查symbol
的值并添加我想要的值(tech
代表amd
和msft
例如)。
我想要的结果如下:
symbol close sector
0 msft 100 tech
1 amd 30 tech
2 bac 70 bank
3 citi 80 bank
答案 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']
中,以创建新列。