谁能建议使用 re.sub() 在 pandas 数据框列名中替换字符串?

我对有效数据框 df 有以下问题,该数据框在列名中包含诸如“_”、“”、“?”和“-”之类的字符。数据框是从第三方 csv 导入的。我需要摆脱这些字符,所以:


import pandas as pd

import re

. . . 定义 df 。. .


dfr = [(' ', '_'), ('?', ''), ('/', '_'), ('-', '_')]

# df.columns = df.columns.str.replace(' ', '_') ¦ *these four*   

# df.columns = df.columns.str.replace('?', '')  ¦ *lines are*

# df.columns = df.columns.str.replace('/', '_') ¦ *my original*

# df.columns = df.columns.str.replace('-', '_') ¦ *functioning code*

for o, n in dfr:

    df.columns = re.sub(o, n, df.columns.str)

这会产生以下错误:


Traceback (most recent call last):

  File "<input>", line 33, in <module>

  File "C:\Users\andyt\anaconda3\envs\Property\lib\re.py", line 208, in sub

    return _compile(pattern, flags).sub(repl, string, count)

TypeError: expected string or bytes-like object

有人可以帮忙吗?


响应@sammywemmy 的列名:

c = ['Postcode', 'In Use?', 'Latitude', 'Longitude', 'Easting', 'Northing', 'Grid Ref', 'County',

                          'District', 'Ward', 'Country', 'Constituency', 'Introduced', 'Terminated', 'Parish',

                          'National Park', 'Population', 'Households', 'Built up area', 'Built up sub-division',

                          'Lower layer super output area', 'Rural/urban', 'Region', 'Altitude', 'London zone',

                          'Local authority', 'Middle layer super output area', 'Index of Multiple Deprivation',

                          'Quality', 'User Type', 'Last updated', 'Nearest station', 'Distance to station',

                          'Police force', 'Water company', 'Plus Code', 'Average Income']

更新以响应@AMC

@AMC 还问我从那个错误中理解了什么......

答案是re.sub模块似乎想要一个字符串作为第三个参数传递(我已经通过单独分配o = ' '和n = '_'代替字典分配来调试它dfr = ...并且错误仍然存在)但我看不到'df. columns.str' 可以作为字符串 indf.columns = df.columns.str.replace(' ', '_')但不能在df.columns = re.sub(o, n, df.columns.str).


慕姐8265434
浏览 102回答 1
1回答

长风秋雁

只需更换您的线路:df.columns&nbsp;=&nbsp;re.sub(o,&nbsp;n,&nbsp;df.columns.str)和df.columns&nbsp;=&nbsp;df.columns.str.replace(o,n)你很好!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python