努力将 DBF 文件转换为 Pandas DataFrame
Struggles with converting a DBF file to Pandas DataFrame
我正在尝试在此处使用 public 制作的加拿大广播电台 DBF 文件:
https://sms-sgs.ic.gc.ca/eic/site/sms-sgs-prod.nsf/eng/h_00015.html
我想专门将 fmstatio.dbf 文件读入 Pandas DataFrame。我在 Python.
中尝试了两个通常推荐的 DBF 包
当使用 simpledbf (https://pypi.org/project/simpledbf/) 时,我只在使用 dbf.to_dataframe() 函数时获取列名。
我还在 pypi 上尝试了 dbf (https://pypi.org/project/dbf/)。我能够将 DBF 文件读入 table:
table = dbf.Table(filename='/datadrive/canada/fmstatio.dbf')
table.open(dbf.READ_ONLY)
print(table)
table.close()
并在table上得到以下信息:
Table: /datadrive/canada/fmstatio.dbf
Type: dBase III Plus
Codepage: ascii (plain ol' ascii)
Status: DbfStatus.READ_ONLY
Last updated: 1921-12-07
Record count: 8428
Field count: 37
Record length: 221
但是当尝试转换成DataFrame时,我没有成功:
oh_canada = pd.DataFrame(table)
table.close()
我收到错误:
data = fielddef[CLASS](decoder(data)[0])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 4: ordinal not in range(128)
可能有人知道在 Pandas 中处理这种 DBF 文件的最佳方法吗?非常感谢。
table 说它是“普通的旧 ascii”,但它在撒谎。它包含“e with acute accent”,考虑到加拿大数据库中的法语内容,这并不奇怪。要解决此问题,您需要覆盖代码页:
table = dbf.Table(filename='/datadrive/canada/fmstatio.dbf',codepage=3)
“3”表示默认 Windows 代码页,CP1252。这样,我就可以读取文件了。
我仍然不确定 pandas
是否可以导入它作为迭代器提供的格式。您可能需要使用 export
将其转换为列表。
我正在尝试在此处使用 public 制作的加拿大广播电台 DBF 文件: https://sms-sgs.ic.gc.ca/eic/site/sms-sgs-prod.nsf/eng/h_00015.html
我想专门将 fmstatio.dbf 文件读入 Pandas DataFrame。我在 Python.
中尝试了两个通常推荐的 DBF 包当使用 simpledbf (https://pypi.org/project/simpledbf/) 时,我只在使用 dbf.to_dataframe() 函数时获取列名。
我还在 pypi 上尝试了 dbf (https://pypi.org/project/dbf/)。我能够将 DBF 文件读入 table:
table = dbf.Table(filename='/datadrive/canada/fmstatio.dbf')
table.open(dbf.READ_ONLY)
print(table)
table.close()
并在table上得到以下信息:
Table: /datadrive/canada/fmstatio.dbf
Type: dBase III Plus
Codepage: ascii (plain ol' ascii)
Status: DbfStatus.READ_ONLY
Last updated: 1921-12-07
Record count: 8428
Field count: 37
Record length: 221
但是当尝试转换成DataFrame时,我没有成功:
oh_canada = pd.DataFrame(table)
table.close()
我收到错误:
data = fielddef[CLASS](decoder(data)[0])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 4: ordinal not in range(128)
可能有人知道在 Pandas 中处理这种 DBF 文件的最佳方法吗?非常感谢。
table 说它是“普通的旧 ascii”,但它在撒谎。它包含“e with acute accent”,考虑到加拿大数据库中的法语内容,这并不奇怪。要解决此问题,您需要覆盖代码页:
table = dbf.Table(filename='/datadrive/canada/fmstatio.dbf',codepage=3)
“3”表示默认 Windows 代码页,CP1252。这样,我就可以读取文件了。
我仍然不确定 pandas
是否可以导入它作为迭代器提供的格式。您可能需要使用 export
将其转换为列表。