我对有效数据框 df 有以下问题,该数据框在列名中包含诸如“_”、“”、“?”和“-”之类的字符。数据框是从第三方 csv 导入的。我需要摆脱这些字符,所以:import pandas as pdimport 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).
1 回答
长风秋雁
TA贡献1757条经验 获得超7个赞
只需更换您的线路:
df.columns = re.sub(o, n, df.columns.str)
和
df.columns = df.columns.str.replace(o,n)
你很好!
添加回答
举报
0/150
提交
取消