Pandas 使用通配符左右去除字符
Pandas Strip Characters Left and Right Using Wildcards
我正在尝试删除 df 列左侧和右侧的字符,这些字符在大型 DF 的行中不断重复。前导数字也会发生变化,所以这并不容易。我的数据如下所示:
128544 20210831 2200 882.2 342259.UNITED STATES.LAKERS.NBA.csv
128545 20210831 2300 918.9 342259.UNITED STATES.LAKERS.NBA.csv
128546 20210901 0 NaN 544257.UNITED STATES.CELTICS.NBA.csv
128547 20210901 100 NaN 544257.UNITED STATES.CELTICS.NBA.csv
我需要剥离字符 DF“df”看起来像这样:
col1 col2 col3 col4
128544 20210831 2200 882.2 LAKERS
128545 20210831 2300 918.9 LAKERS
128546 20210901 0 NaN CELTICS
128547 20210901 100 NaN CELTICS
我试过了 -
df['col4'] = df.col4.str.replace(".NBA").*","")
它给了我右半部分,但我看不出如何去除左侧或同时去除两者。
感谢您的帮助,
试试 split
df['col4'] = df.col4.str.split('.').str[2]
或者为了获得更精确的匹配,请尝试使用 .str.extract
,因为您正在研究正则表达式:
>>> df['col4'] = df['col4'].str.extract('\d+\.UNITED STATES\.(.*)\.NBA\.csv')[0]
>>> df
col0 col1 col2 col3 col4
0 128544 20210831 2200 882.2 LAKERS
1 128545 20210831 2300 918.9 LAKERS
2 128546 20210901 0 NaN CELTICS
3 128547 20210901 100 NaN CELTICS
我正在尝试删除 df 列左侧和右侧的字符,这些字符在大型 DF 的行中不断重复。前导数字也会发生变化,所以这并不容易。我的数据如下所示:
128544 20210831 2200 882.2 342259.UNITED STATES.LAKERS.NBA.csv
128545 20210831 2300 918.9 342259.UNITED STATES.LAKERS.NBA.csv
128546 20210901 0 NaN 544257.UNITED STATES.CELTICS.NBA.csv
128547 20210901 100 NaN 544257.UNITED STATES.CELTICS.NBA.csv
我需要剥离字符 DF“df”看起来像这样:
col1 col2 col3 col4
128544 20210831 2200 882.2 LAKERS
128545 20210831 2300 918.9 LAKERS
128546 20210901 0 NaN CELTICS
128547 20210901 100 NaN CELTICS
我试过了 - df['col4'] = df.col4.str.replace(".NBA").*","")
它给了我右半部分,但我看不出如何去除左侧或同时去除两者。
感谢您的帮助,
试试 split
df['col4'] = df.col4.str.split('.').str[2]
或者为了获得更精确的匹配,请尝试使用 .str.extract
,因为您正在研究正则表达式:
>>> df['col4'] = df['col4'].str.extract('\d+\.UNITED STATES\.(.*)\.NBA\.csv')[0]
>>> df
col0 col1 col2 col3 col4
0 128544 20210831 2200 882.2 LAKERS
1 128545 20210831 2300 918.9 LAKERS
2 128546 20210901 0 NaN CELTICS
3 128547 20210901 100 NaN CELTICS