Предложения для нескольких фильтров подстрок с Python

My Dataframe:

Предложения для нескольких фильтров подстрок с Python

или:

   Symbol List   mic reuters_exchange_code
12     1COV.DE  XETR                   .DE
13      2GB.DE  XETR                   .DE
14     2HRA.DE  XETR                   .DE
32       3IN.L  XLON                    .L
64       888.L  XLON                    .L
66      93M.DE  XETR                   .DE
70     A1OS.DE  XETR                   .DE
71      A2A.MI  MTAA                   .MI
72      A3M.MC  XMAD                   .MC
73      A4Y.DE  XETR                   .DE
74       A5G.I  XDUB                    .I
76      AAB.CO  XCSE                   .CO
77      AAD.DE  XETR                   .DE
78      AAG.DE  XETR                   .DE
80      AAK.ST  XSTO                   .ST
81     AALB.AS  XAMS                   .AS
82       AAL.L  XLON                    .L
83       AAM.S  XSWX                    .S
84      AAQ.DE  XETR                   .DE
86       AAS.L  XLON                    .L
87        AA.L  XLON                    .L
88      ABBN.S  XVTX                    .S

Любые предложения, как преодолеть это?

В столбце 1 сначала отфильтруйте «XSWX» и «XVTX», чтобы получить «SW» и «VX» соответственно.

... затем в столбце 2 замените только строки «» на «SW» и «VX»

... чтобы получить результат, показывающий «AAM.SW» и «ABBN.VX» вместо текущих «ААМ.С» и «ААБН.С» в столбце индекса.

Я вижу, у вас есть фрейм данных в jupyter notebook, но мы не можем скопировать скриншот. Пожалуйста, print() фрейм данных и вставьте его сюда, чтобы мы могли запустить код самостоятельно.

Erfan 15.03.2019 14:13

Хорошо, рад, но как мне это сделать? извините, меня никогда не спрашивали об этом раньше.

goaty 15.03.2019 14:21
print(dataframe.reset_index()). Я использую reset_index(), потому что вижу, что symbol list — это ваш индекс в данном случае, и нам трудно его скопировать.
Erfan 15.03.2019 14:23

done print(dataframe.reset_index()) ... затем сохранить в html и прикрепить этот файл сюда?

goaty 15.03.2019 14:27

Просто скопируйте вывод Jupyter Notebook и вставьте его в свой пост. Это так просто.

Erfan 15.03.2019 14:30

готово... получилось... надеюсь поможет =D

goaty 15.03.2019 14:42

Можете ли вы сделать print(df[['Symbol List', 'mic', 'reuters_exchange_code']]), так как это все еще не копируется.

Erfan 15.03.2019 14:50

ага... сработало. Добавил данные по запросу. Спасибо

goaty 15.03.2019 14:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
8
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

если я понимаю, что вы хотите:

#modify the code .S to SW for XSWX
df.loc[df['reuters_exchange_code'].eq('.S') & df['mic'].eq('XSWX'), 'reuters_exchange_code'] = 'SW'
#modify the code .S to VX for XVTX
df.loc[df['reuters_exchange_code'].eq('.S') & df['mic'].eq('XVTX'), 'reuters_exchange_code'] = 'VX'
:
:
#rebuild the symbol list
df['Symbol List'] = df['bats_name'] + df['reuters_exchange_code']
df = df.set_index('Symbol List')

Да, это идея, но когда я запускаю ваш код, я получаю недопустимый синтаксис, показывающий df['mic']

goaty 15.03.2019 14:49

Я перезапустил ваш код, но результат такой же, как и раньше... хотя это правильная идея

goaty 15.03.2019 15:08
Ответ принят как подходящий

Вы хотите использовать np.select, так как у вас более одного условия. Итак, мы можем исправить нашу колонку reuters_exchange_code. После этого мы заполняем Symbol List, соединяя bats_name с reuters_exchange_code следующим образом:

conditions = [
    (df['mic'] == 'XSWX'),
    (df['mic'] == 'XVTX')
]

choices = ['.SW','.VX']

df['reuters_exchange_code'] = np.select(conditions, 
                                        choices, 
                                        default=df['reuters_exchange_code'])

df['Symbol List'] = df['bats_name'] + df['reuters_exchange_code']

print(df)
   Symbol List bats_name                                  company_name   mic  \
0      1COV.DE      1COV                                   Covestro AG  XETR   
1       2GB.DE       2GB                                   G Energy AG  XETR   
2      2HRA.DE      2HRA                            H&R GmbH & Co KGaA  XETR   
3        3IN.L       3IN                         3i Infrastructure PLC  XLON   
4        888.L       888                              888 Holdings PLC  XLON   
5       93M.DE       93M                            MPH Health Care AG  XETR   
6      A1OS.DE      A1OS                          All for One Steeb AG  XETR   
7       A2A.MI       A2A                                       A2A SpA  MTAA   
8       A3M.MC       A3M  Atresmedia Corp de Medios de Comunicacion SA  XMAD   
9       A4Y.DE       A4Y                       Accentro Real Estate AG  XETR   
10       A5G.I       A5G                                 AIB Group PLC  XDUB   
11      AAB.CO       AAB                      Aalborg Boldspilklub A/S  XCSE   
12      AAD.DE       AAD                               Amadeus Fire AG  XETR   
13      AAG.DE       AAG                                     Aumann AG  XETR   
14      AAK.ST       AAK                                        AAK AB  XSTO   
15     AALB.AS      AALB                        Aalberts Industries NV  XAMS   
16       AAL.L       AAL                            Anglo American PLC  XLON   
17      AAM.SW       AAM                            Anglo American PLC  XSWX   
18      AAQ.DE       AAQ                             AAP Implantate AG  XETR   
19       AAS.L       AAS              Aberdeen Standard Asia Focus PLC  XLON   
20        AA.L        AA                                        AA PLC  XLON   
21     ABBN.VX      ABBN                                       ABB Ltd  XVTX   
22      ABB.MC       ABB                                 AB-Biotics SA  XMAD   
23      ABB.ST       ABB                                       ABB Ltd  XSTO   
24     ABCA.PA      ABCA                                 ABC arbitrage  XPAR   
25     ABEO.PA      ABEO                                       Abeo SA  XPAR   
26       ABF.L       ABF                  Associated British Foods PLC  XLON   
27     ABGP.MC      ABGP                                    Abengoa SA  XMAD   
28      ABG.MC       ABG                                    Abengoa SA  XMAD   
29     ABIO.PA      ABIO                                    Albioma SA  XPAR   

   reuters_exchange_code  
0                    .DE  
1                    .DE  
2                    .DE  
3                     .L  
4                     .L  
5                    .DE  
6                    .DE  
7                    .MI  
8                    .MC  
9                    .DE  
10                    .I  
11                   .CO  
12                   .DE  
13                   .DE  
14                   .ST  
15                   .AS  
16                    .L  
17                   .SW  
18                   .DE  
19                    .L  
20                    .L  
21                   .VX  
22                   .MC  
23                   .ST  
24                   .PA  
25                   .PA  
26                    .L  
27                   .MC  
28                   .MC  
29                   .PA  

Давайте отфильтруем только строки, которые изменились, чтобы показать, что это сработало:

print(df[(df['mic'] == 'XSWX') | (df['mic'] == 'XVTX')][['Symbol List', 'mic', 'reuters_exchange_code']])

   Symbol List   mic reuters_exchange_code
17      AAM.SW  XSWX                   .SW
21     ABBN.VX  XVTX                   .VX

вау, это оно ... спасибо, это сработало! Какой гениальный =D

goaty 15.03.2019 15:17

Приятного вам кодирования! @козёл

Erfan 15.03.2019 15:19

Другие вопросы по теме