[英]can you capture multiple substrings in a Panda dataframe column using .str.split() in one step
我有一个数据库,它在 Pandas 数据框中有一列,其中包含一个字符串,该字符串具有我提取的两个子字符串(一个字符串和一个数字)。 我用 str.split() 来做,但不是以非常 Pythonic 的方式,因为 split,至少对我来说,将拆分的第一项返回到数据库。 我当然可以将结果分配给单独的数据框,完成拆分并将其恢复。
我确信有更好的方法可以做到这一点,但到目前为止我还没有找到它。
这是一个说明性的数据框:
df = pd.DataFrame ({'d': {71: '2022-01-03', 72: '2022-01-04', 73: '2022-01-06', 74: '2022-01-07', 75: '2022-01-07'},
'e': {71: 'MDU(US5526901096) Cash Dividend USD 0.2175 per Share (Ordinary Dividend)',
72: 'KMB(US4943681035) Cash Dividend USD 1.14 per Share (Ordinary Dividend)',
73: 'IRM(US46284V1017) Cash Dividend USD 0.6185 per Share (Ordinary Dividend)',
74: 'MRK(US58933Y1055) Cash Dividend USD 0.69 per Share (Ordinary Dividend)',
75: 'PEP(US7134481081) Cash Dividend USD 1.075 per Share (Ordinary Dividend)'},
'f': {71: '108.75', 72: '1368', 73: '556.65', 74: '345', 75: '537.5'}})
df
这没有以任何方式进行优化,它做了一些假设,但我试图在下面强调它们。
import pandas as pd
import re
def parse_row(row) :
match = re.search('^([a-zA-Z]+).*USD (\d+\.?\d*) per', row, re.I)
return pd.Series([match.group(1), match.group(2)])
df[['symbol', 'qrtrly_div_total']] = df['e'].apply( parse_row )
>>> df
d e f symbol qrtrly_div_total
71 2022-01-03 MDU(US5526901096) Cash Dividend USD 0.2175 per... 108.75 MDU 0.2175
72 2022-01-04 KMB(US4943681035) Cash Dividend USD 1.14 per S... 1368 KMB 1.14
73 2022-01-06 IRM(US46284V1017) Cash Dividend USD 0.6185 per... 556.65 IRM 0.6185
74 2022-01-07 MRK(US58933Y1055) Cash Dividend USD 0.69 per S... 345 MRK 0.69
75 2022-01-07 PEP(US7134481081) Cash Dividend USD 1.075 per ... 537.5 PEP 1.075
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.