如何在pandas数据帧中用ASCII替换非ASCII

时间:2014-12-18 10:56:31

标签: python unicode pandas ascii dataframe

我的程序中有一个来自Excel文件的pandas数据框作为输入。

我想替换pandas Data Frame中的一些非ASCII字符。

import pandas as pd
XList=['Meßi','Ürik']
YList=['01.01.1970','01.01.1990']

df = pd.DataFrame({'X':XList,
                   'Y':YList})

      X           Y
0  Meßi  01.01.1970 
1  Ürik  01.01.1990

我想创建一些替换规则:例如。 ß-> ss和Ü-> UE

得到这个:

       X           Y
0  Messi  01.01.1970 
1  UErik  01.01.1990

注意:我正在使用Python 2.7

更新

使用以下答案解决并在Eclipse之后设置:

1°:将Eclipe中的文本文件编码更改为UTF-8。

如何: How to use Special Chars in Java/Eclipse

2°:添加到第一行命令

# -*- coding: UTF-8 -*- 

http://www.vogella.com/tutorials/Python/article.html

1 个答案:

答案 0 :(得分:1)

一种方法是创建一个dict并迭代k,v并使用replace

In [42]:

repl_dict = {'ß':'ss', 'Ü':'UE'}
for k,v in repl_dict.items():
    df.loc[df.X.str.contains(k), 'X'] = df.X.str.replace(pat=k,repl=v)
df

Out[42]:
       X           Y
0  Messi  01.01.1970
1  UErik  01.01.1990

修改

对于不允许在python脚本中使用unicode编码的编辑器,您可以使用unicode值进行音译:

In [72]:

repl_dict = {'\u00DF':'ss', '\u00DC':'UE'}
for k,v in repl_dict.items():
    df.loc[df.X.str.contains(k), 'X'] = df.X.str.replace(pat=k,repl=v)
df

Out[72]:
       X           Y
0  Messi  01.01.1970
1  UErik  01.01.1990