python-3.x - 使用 Python 进行多子字符串过滤的建议
问题描述
My Dataframe:
或者:
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 列中,仅将“ .S ”字符串替换为“ SW ”和“ VX ”
...获得显示“ AAM.SW ”和“ ABBN.VX ”的结果,而不是在索引列中显示其当前的“ AAM.S ”和“ AABN.S ”。
解决方案
您想使用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
推荐阅读
- javascript - 子 postMessage 的父接收者始终为空白
- pandas - 如何从 colab 将 csv 文件实际保存到谷歌驱动器?
- amazon-web-services - DynamoDb 写入批处理,[WARN] (invoke@invoke.c:331 errno: No such file or directory) run_dotnet(dotnet_path, &args) failed
- flutter - 如何在 Flutter 中将 Object 转换为指定类型
- docker - 捕获 Docker 容器的 seccomp 违规
- docker - Docker-Compose Down 是否重启服务器
- verilog - gtkwave 中奇怪的测试台行为
- python - 使用现有列中的特定单词向数据框添加额外列
- akka - 与演员之外的 akka 接待员互动
- flutter - 没有定义“statefulwidget.createstate”和 setstate 的具体实现