Python 由于 unicode 问题无法导出到 Stata?
Python cannot export to Stata due to unicode problem?
我正在尝试将 Python 中的数据框导出为 Stata dta。这是我使用的代码的精简版:
import pandas as pd
df_master = pd.read_stata(old_dta_location)
# Do some data manipulation.
df_master.to_stata(new_dta_location, {"final_date": "td"}, write_index = False)
执行此操作时出现以下错误:
UnicodeEncodeError: 'latin-1' codec can't encode character '\u20ac' in position 11: ordinal not in range(256)
我知道还有其他关于 unicode 错误的问题,但由于它们与 Stata 无关,所以诸如 'encoding = "utf8"' 之类的参数的选项不起作用。
我该如何解决这个问题?
Stata文件可以接受UTF-8数据,只是to_csv
坚持使用不含€
字符的Latin-1编码。一种可能的解决方法是直接使用 StataWriterUTF8
对象:
w = pd.io.stata.StataWriterUTF8('foo.dta', df_master)
w.write_file()
默认情况下 pandas 导出到不支持 unicode 的 Stata 版本 10(代码 114)。
只需指定更高版本的 Stata (118+) 即可无错误地导出 unicode-columns:
df = pd.DataFrame({'animal': ['€falcon', '€parrot', '€falcon','€parrot']})
df.to_stata('animals.dta', version=118)
我正在尝试将 Python 中的数据框导出为 Stata dta。这是我使用的代码的精简版:
import pandas as pd
df_master = pd.read_stata(old_dta_location)
# Do some data manipulation.
df_master.to_stata(new_dta_location, {"final_date": "td"}, write_index = False)
执行此操作时出现以下错误:
UnicodeEncodeError: 'latin-1' codec can't encode character '\u20ac' in position 11: ordinal not in range(256)
我知道还有其他关于 unicode 错误的问题,但由于它们与 Stata 无关,所以诸如 'encoding = "utf8"' 之类的参数的选项不起作用。
我该如何解决这个问题?
Stata文件可以接受UTF-8数据,只是to_csv
坚持使用不含€
字符的Latin-1编码。一种可能的解决方法是直接使用 StataWriterUTF8
对象:
w = pd.io.stata.StataWriterUTF8('foo.dta', df_master)
w.write_file()
默认情况下 pandas 导出到不支持 unicode 的 Stata 版本 10(代码 114)。
只需指定更高版本的 Stata (118+) 即可无错误地导出 unicode-columns:
df = pd.DataFrame({'animal': ['€falcon', '€parrot', '€falcon','€parrot']})
df.to_stata('animals.dta', version=118)