簡體   English   中英

如何將 a.dbf 文件轉換為 Pandas DataFrame?

[英]How do I convert a .dbf file into a Pandas DataFrame?

我有一個.dbf文件,我想將其轉換為 pandas DataFrame ,但DataFrame無法直接轉換數據。

使用我的dbf library ,以下 function 將完成這項工作:

def dbf_to_dataframe(filename):
    """
    converts the dbf table at filename into a Panda's DataFrame
    data types and field names are preserved
    """
    import dbf
    import numpy as np
    import pandas as pd
    from datetime import date, datetime, time
    names = []
    types = []
    table = dbf.Table(filename)
    for name in table.field_names:
        ftype, size, decimals, _ = table.field_info(name)
        ftype = chr(ftype)
        if ftype in 'GP':
            continue
        if ftype == 'N' and decimals:
            ftype = 'F'
        dtype = {
                'B': 'float64',
                'C': 'string',
                'D': 'datetime64[ns]',
                'F': 'float64',
                'I': 'int64',
                'L': 'boolean',
                'M': 'string',
                'N': 'int64',
                'T': 'datetime64[ns]',
                'Y': 'float64',
                }[ftype]
        names.append(name)
        types.append(dtype)
    with table:
        series = [[] for _ in names]
        for rec in table:
            for i, value in enumerate(rec):
                if isinstance(value, date):
                    value = datetime.combine(value, time())
                elif value is None:
                    value = np.nan
                series[i].append(value)
        data_recs = dict(
                (n, pd.Series(s, dtype=t))
                for n, s, t in zip(names, series, types)
                )
        return pd.DataFrame(data_recs)

我真的很欣賞上面答案中的代碼,有人可以解釋為什么要這樣組裝代碼嗎? 我查找了 dbf 模塊文檔,但沒有找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM