gpt4 book ai didi

python - 替换 Pandas 数据框中的特殊字符

转载 作者:太空狗 更新时间:2023-10-30 02:16:12 26 4
gpt4 key购买 nike

所以,我有这个用 iso8859_15 编码的巨大 DF。

我有几列包含巴西的名称和地点,因此其中一些包含特殊字符,例如“í”或“Ô”。

我有在字典中替换它们的 key {'í':'i', 'á':'a', ...}

我尝试用几种方法(如下)替换它,但都没有用。

df.replace(dictionary, regex=True, inplace=True) ###BOTH WITH AND WITHOUT REGEX AND REPLACE

还有:

df.udpate(pd.Series(dic))

它们都没有预期的输出,即“NÍCOLAS”等字符串变成“NICOLAS”。

帮忙吗?

最佳答案

pandas.DataFrame.replace 上的文档表示您必须提供一个嵌套字典:第一层是列名,您必须为其提供一个带有替换对的第二个字典

所以,这应该可行:

>>> df=pd.DataFrame({'a': ['NÍCOLAS','asdč'], 'b': [3,4]})
>>> df
a b
0 NÍCOLAS 3
1 asdč 4

>>> df.replace({'a': {'č': 'c', 'Í': 'I'}}, regex=True)
a b
0 NICOLAS 3
1 asdc 4

编辑。 似乎 pandas 也接受非嵌套翻译字典。在这种情况下,问题可能出在字符编码特别是如果您使用 Python 2。假设您的 CSV 加载函数正确解码了文件字符(作为真正的 Unicode 代码点),那么您应该注意您的翻译/替换字典也用 Unicode 字符定义,如下所示:

dictionary = {u'í': 'i', u'á': 'a'}

如果您有这样的定义(并且使用 Python 2):

dictionary = {'í': 'i', 'á': 'a'}

那么该字典中的实际键是多字节字符串。它们是哪些字节(字符)取决于实际使用的源文件字符编码,但假设您使用 UTF-8,您将得到:

dictionary = {'\xc3\xa1': 'a', '\xc3\xad': 'i'}

这可以解释为什么 pandas 无法替换这些字符。所以,一定要在 Python 2 中使用 Unicode 文字:u'this is unicode string'

另一方面,在 Python 3 中,所有字符串都是 Unicode 字符串,您不必使用 u 前缀(实际上是 Python 中的 unicode 类型2 在 Python 3 中重命名为 str,Python 2 中的旧 str 现在在 Python 3 中为 bytes

关于python - 替换 Pandas 数据框中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45596529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com