我有一个数据集,其中包含一些标头,这些标头以不带空格的十六进制代码结尾。下面是我尝试摆脱的尝试,但仍然存在。
输入:
files=[file1,file2,file3]
for f in files:
for col in f.columns:
col = col.replace("\xc2\xa0", "")
col = col.replace(u'\xa0', u' ')
print(f.columns.values)
输出:
'Name' 'Date' 'rep_cur' 'Passenger Revenue\xa0' 'Cargo Revenue\xa0'
'Other Revenue\xa0' 'Total Cargo & Other Revenue' 'Total Revenue\xa0'
'% inc / (dec) to previous period' 'Employee Costs\xa0' 'Fuel and oil\xa0'
答案 0 :(得分:0)
使用str.strip
:
l = ['Name','Date','rep_cur','Passenger Revenue\xa0','Cargo Revenue\xa0',
'Other Revenue\xa0','Total Cargo & Other Revenue','Total Revenue\xa0',
'% inc / (dec) to previous period','Employee Costs\xa0','Fuel and oil\xa0']
new_l = [i.strip() for i in l]
输出:
['Name',
'Date',
'rep_cur',
'Passenger Revenue',
'Cargo Revenue',
'Other Revenue',
'Total Cargo & Other Revenue',
'Total Revenue',
'% inc / (dec) to previous period',
'Employee Costs',
'Fuel and oil']
答案 1 :(得分:0)
for col in f.columns:
col = col.replace("\xc2\xa0", "")
col = col.replace(u'\xa0', u' ')
这对迭代所用的实际col
无效。那几乎等于:
li = [1, 2, 3]
for n in li:
n = n + 1
print(li)
# [1, 2, 3]
一个不错的IDE应该按照“ n
(在您的示例中为col
)被重新定义而没有使用”的行显示警告。
相反,您应该使用熊猫提供的工具,例如df.rename
。
df = pd.DataFrame({'a\xa0': []})
print(df.rename(lambda col: col.replace('\xa0', ''), axis='columns'))
请注意,.rename
返回一个新的数据帧。您可以使用inplace=True
更改原始数据框:
df.rename(lambda col: col.replace('\xa0', ''), axis='columns', inplace=True)
如果您不想那么花哨,可以自己替换列的名称(这类似于您的原始代码尝试执行的操作):
df.columns = [column.replace('\xa0', '') for col in df.columns]