python-3.x - 在特定模式值之前和之后提取字符串
问题描述
我有熊猫数据框,我想在 pb~ 之后和 _ 或''或''之前提取值。所以它就像字符串 pb~value_ 或 pb~value' ' 或 pb~value''。
import pandas as pd
data = {'PName': ['ag~fbai-churnsoon_mk~de_at~lia_sa~fcs_tg~fbai_ts~alldevice-allgender-13-65_md~c_pb~fcbk_rt~cpm',
'pb~precision disclosed desktop_sz~300x600_pd~halfp-dmp-hubble w tablets_ch~dis_dt~dt_fm~ban_it~poe_vv~si_ad~as_rt~cpm_tg~rtg_sa~redc_ts~none_md~w_ff~pr-teas-rt']}
# Creates pandas DataFrame.
df = pd.DataFrame(data)
print(df)
# print the data
预期输出
PName Values
ag~fbai-churnsoon_mk~de_at~lia_sa~fcs_tg~fbai_ts~alldevice-allgender-13-65_md~c_pb~fcbk_rt~cpm fcbk
pb~precision disclosed desktop_sz~300x600_pd~halfp-dmp-hubble w tablets_ch~dis_dt~dt_fm~ban_it~poe_vv~si_ad~as_rt~cpm_tg~rtg_sa~redc_ts~none_md~w_ff~pr-teas-rt precision
我试过了
df['value'] = df['PName'].str.extract("")
但无法弄清楚如何提取这些值。
解决方案
import pandas as pd
import re
data = {'PName': ['ag~fbai-churnsoon_mk~de_at~lia_sa~fcs_tg~fbai_ts~alldevice-allgender-13-65_md~c_pb~fcbk_rt~cpm',
'pb~precision disclosed desktop_sz~300x600_pd~halfp-dmp-hubble w tablets_ch~dis_dt~dt_fm~ban_it~poe_vv~si_ad~as_rt~cpm_tg~rtg_sa~redc_ts~none_md~w_ff~pr-teas-rt']}
# Creates pandas DataFrame.
df = pd.DataFrame(data)
df['value'] = df['PName'].apply(lambda x :re.findall('pb~([\s\S]*?)(?:_| )',x)[0])
df
PName value
0 ag~fbai-churnsoon_mk~de_at~lia_sa~fcs_tg~fbai_... fcbk
1 pb~precision disclosed desktop_sz~300x600_pd~h... precision
推荐阅读
- c# - 在 Win Form DataGridView C#.NET 中使字符串的第一个字符大写
- variables - 在 IBM Watson Assistant 中将自由文本存储为变量
- codeblocks - 在代码块 C++ 中编译我的代码时遇到问题
- java - 如何以编程方式在特定时间让我的 android 设备入睡并在另一个时间醒来?
- bash - 使用 shell 脚本从具有指定条件的行中获取特定的列值
- java - “访问被拒绝查找属性 'net.dns*'” (*=1/2/3..) 无法在 Android Oreo+ 设备上执行 TLS 网络操作
- corda - 在 Corda 中构建 Irs-demo 时出错
- python - SCmd.readSerial() 和 Serial.read() 之间的区别
- sql-server - sqlsrv_connect() 不适用于 Wamp 32 位
- haskell - 创建一个矩形?- 哈斯克尔