Заполнение столбца панд на основе другого столбца - PullRequest
0 голосов
/ 20 декабря 2018

Я хотел бы заполнить каждую строку столбца моего фрейма данных на основе записей в другом столбце, в частности, я хочу заполнить каждую строку соответствующим именем соответствующего тикера для этой акции, например

dict1 = [{'ticker': 'AAPL','Name': 'Apple Inc.'},
 {'ticker': 'MSFT','Name': 'Microsoft Corporation'}]

df1 = pd.DataFrame(dict1)

Эта функция предоставляет имя для данного тикера:

Так что я могу получить имя для, скажем, MSFT:

dict1 = [{'ticker': 'AAPL','Name': 'Apple Inc.'},
 {'ticker': 'MSFT','Name': get_nasdaq_symbols().loc['MSFT'].loc['Security Name'][:-15]}]

Я изо всех сил пытаюсь найти способ автоматизацииэто с помощью цикла или применить.Кто-нибудь может предложить подход?

Обратите внимание, функция, используемая для получения имени, происходит отсюда:

 from pandas_datareader.nasdaq_trader import get_nasdaq_symbols

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете сначала создать отображение серии:

ticker_name_map = get_nasdaq_symbols()['Security Name'].str[:-15]

Затем используйте pd.Series.map 1 :

df1['Name'] = df1['ticker'].map(ticker_name_map)

Если выхотите, чтобы не отображенные значения остались неизменными, затем используйте следующие fillna:

df1['Name'] = df1['ticker'].map(ticker_name_map).fillna(df1['Name'])

1 pd.Series.replace также возможно, но неэффективная .

...