当前位置: 首页 > 知识库问答 >
问题:

熊猫:将dbf表转换为数据帧

劳麒
2023-03-14

我想读取ArcGIS形状文件的dbf文件,并将其转储到pandas数据帧中。我目前正在使用dbf包。

显然,我已经能够将dbf文件作为一个表加载,但还不能理解如何解析它并将其转换为一个数据帧。怎么做?

这就是我所处的困境:

import dbf
thisTable = dbf.Table('C:\\Users\\myfolder\\project\\myfile.dbf')
thisTable.open(mode='read-only')

Python将此语句作为输出返回,坦率地说,我不知道该如何处理:

dbf。第二版。表('C:\\Users\\myfolder\\project\\myfile.dbf',status='read-only')

编辑

我的原始dbf示例:

FID   Shape    E              N
0     Point    90089.518711   -201738.245555
1     Point    93961.324059   -200676.766517
2     Point    97836.321204   -199614.270439
...   ...      ...            ...

共有3个答案

孟跃
2023-03-14

你可能想看看geopandas。它将允许您执行最重要的GIS操作

http://geopandas.org/data_structures.html

毕胡非
2023-03-14

正如mmann1123所说,您可以使用geopandas来读取您的dbf文件。Geopandas读取它,即使它可能有也可能没有地理空间数据。

假设你的数据只是表格数据(没有地理坐标),并且你希望阅读它并转换成熊猫图书馆可以阅读的格式,我建议使用geopandas。

这里有一个例子:

import geopandas as gpd

My_file_path_name = r'C:\Users\...file_dbf.dbf'

Table = gpd.read_file(Filename)

import pandas as pd
Pandas_Table = pd.DataFrame(Table)

Keys = list(Table.keys())
Keys.remove('ID_1','ID_2') # removing ID attributes from the Table keys list
Keys.remove('Date') # eventually you have date attribute which you wanna preserve.

DS = pd.melt(Pandas_Table, 
             id_vars =['ID_1','ID_2'], # accepts multiple filter/ID values 
             var_name='class_fito', # Name of the variable which will aggregate all columns from the Table into the Dataframe
             value_name ='biomass (mg.L-1)' , # name of the variable in Dataframe
             value_vars= Keys # parameter that defines which attributes from the Table are a summary of the DataFrame)

# checking your DataFrame:

type(DS)   # should appear something like: pandas.core.frame.DataFrame
戚京
2023-03-14

您应该看看simpledbf:

In [2]: import pandas as pd

In [3]: from simpledbf import Dbf5

In [4]: dbf = Dbf5('test.dbf')

In [5]: df = dbf.to_dataframe()

这对我来说是一个小样本。dbf文件。希望有帮助。

 类似资料:
  • 我有一个这样的字典列表: 我想把它变成一个熊猫,如下所示: 注意:列的顺序并不重要。 如何将字典列表转换为如上所示的数据帧?

  • 我对熊猫有些陌生。我有一个熊猫数据框,是一行23列。 我想把它转换成一个系列?我想知道做这件事最像蟒蛇的方式是什么? 我试过pd。系列(我的结果),但它抱怨。它还没有聪明到意识到它仍然是数学术语中的“向量”。 谢谢!

  • 问题内容: 我对熊猫有些陌生。我有一个熊猫数据框,它是1行乘23列。 我想将其转换为系列吗?我想知道最pythonic的方法是什么? 我试过了,但是抱怨。它不够聪明,无法意识到它仍然是数学上的“向量”。 谢谢! 问题答案: 它不够聪明,无法意识到它仍然是数学上的“向量”。 可以说它足够聪明,可以识别尺寸差异。:-) 我认为您可以做的最简单的事情是使用位置选择该行,这将为您提供一个Series,其列

  • 问题内容: 我有以下熊猫数据框: 我想将日期时间索引转换为数据框的列。我尝试过,但结果没有改变。任何想法? 问题答案: 需要分配输出或参数:

  • 我在Pandas中读取了一个SQL查询,虽然值是字符串、日期和整数,但它们是作为dtype“object”输入的。我能够将日期“对象”转换为datetime数据类型,但在尝试转换字符串和整数时出错。 以下是一个例子: 将转换为日期时间有效: 但我在尝试将转换为整数时出错: 注意:我得到一个类似的错误,当我尝试 当试图转换为字符串时,似乎什么也没有发生。

  • 我使用熊猫数据框来清理和处理数据。但是,我需要将其转换为numpy ndarray,以便使用利用矩阵乘法。我将数据框转换为具有以下内容的列表列表: 这将返回以下结构: 然后我将其转换为如下所示的numpy数组: 然而,以下打印: 给出这个结果: 但是,我需要它们都是numpy数组。如果它不是来自熊猫数据帧,我只是转换一个硬编码列表,那么它们都是Ndarray。当列表是从数据帧生成的时,如何获取该列