删除带有 Unicode 名称的 pandas 列

0 投票
1 回答
621 浏览
提问于 2025-04-17 23:04

编辑:这个问题和unicode没有关系

我有一些列的名字是unicode格式的,比如“#前田敦子:Japan”。我想把这些列从我的数据框中删除,但我遇到了一个UnicodeEncodeError错误:

这段代码

for title_loc in f_df.columns:
    if 'Japan' in title_loc:
        f_df.drop(title_loc)

会出现这个错误

  File "timeseries/sum_japan_timeseries.py", line 25, in read_timeseries_dir
    f_df.drop(title_loc)
  File "/home/isl/rfcompton/.local/lib/python2.7/site-packages/pandas/core/generic.py", line 1401, in drop
    new_axis = axis.drop(labels)
  File "/home/isl/rfcompton/.local/lib/python2.7/site-packages/pandas/core/index.py", line 1623, in drop
    raise ValueError('labels %s not contained in axis' % labels[mask])
  File "/usr/local/python/2.7.2/lib/python2.7/site-packages/numpy-1.6.1-py2.7-linux-x86_64.egg/numpy/core/numeric.py", line 1379, in array_str
    return array2string(a, max_line_width, precision, suppress_small, ' ', "", str)
  File "/usr/local/python/2.7.2/lib/python2.7/site-packages/numpy-1.6.1-py2.7-linux-x86_64.egg/numpy/core/arrayprint.py", line 309, in array2string
    separator, prefix)
  File "/usr/local/python/2.7.2/lib/python2.7/site-packages/numpy-1.6.1-py2.7-linux-x86_64.egg/numpy/core/arrayprint.py", line 230, in _array2string
    _summaryEdgeItems, summary_insert)[:-1]
  File "/usr/local/python/2.7.2/lib/python2.7/site-packages/numpy-1.6.1-py2.7-linux-x86_64.egg/numpy/core/arrayprint.py", line 355, in _formatArray
    word = format_function(a[-1])
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-3: ordinal not in range(128)

当列名没有unicode字符时,我可以正常使用.drop,有没有什么好主意?

1 个回答

1

这里有几个问题。drop 默认是对行进行操作,而不是对列。而且,默认情况下它会返回一个新的对象,而不会修改原来的对象。问题可能出在它试图打印剩下的列,而这些列中有些也包含无法显示的Unicode字符。

撰写回答