Bao*_*hai 6 python unicode pandas
我正在尝试将 unicode 字的 DataFrame 中的数据转换为 ASCII 到具有某些字符更改的新列...
characterMap = {u'\u00E7': 'c', u'\u00C7' : 'C', u'\u011F' : 'g', u'\u011E' : 'G', u'\u00F6': 'o', u'\u00D6' : 'O', u'\u015F' : 's', u'\u015E' : 'S', u'\u00FC' : 'u', u'\u00DC' : 'U' , u'\u0131' : 'i', u'\u0049' : 'I', u'\u0259' : 'e', u'\u018F' : 'E'}
def convertASCII(word):
asciiWord = ""
word = str(word).rstrip()
for c in word:
if c in characterMap.keys():
asciiWord = asciiWord + characterMap[c]
else:
asciiWord = asciiWord + c
return asciiWord;
test['ascii'] = test['token'].apply(convertASCII)
Run Code Online (Sandbox Code Playgroud)
所以说结果应该是这样的......
token ascii
1555757 qurbangaha qurbangaha
379221 sayl? sayli
2456599 öhd?liyi ohdeliyi
1128903 ki ki
467997 ili?ib ilisib
Run Code Online (Sandbox Code Playgroud)
但是,ASCII列只是token列的重复,而不是上面想要的结果?我已经在另一个脚本上手动运行了 convertASCII 代码,它做我想做的事,但不确定熊猫的错误是什么?
如果您尝试进行的 unicode 转换是标准的,那么您可以直接转换为 ascii。
import unicodedata
test['ascii'] = test['token'].apply(lambda val: unicodedata.normalize('NFKD', val).encode('ascii', 'ignore').decode())
Run Code Online (Sandbox Code Playgroud)
例子:
import unicodedata
data = [{'name': 'sayl?'}, {'name': 'öhd?liyi'}]
df = pd.DataFrame.from_dict(data, orient='columns')
df['name'].apply(lambda val: unicodedata.normalize('NFKD', val).encode('ascii', 'ignore').decode())
Run Code Online (Sandbox Code Playgroud)
输出:
0 sayl
1 ohdliyi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8261 次 |
| 最近记录: |