【问题标题】:Couldn't read dat file from online source in python无法从 python 中的在线源读取 dat 文件
【发布时间】:2018-05-23 22:49:10
【问题描述】:

我无法在 python 中读取this dat file

我尝试了以下方法:

url3 = 'https://www2.census.gov/programs-surveys/saipe/datasets/2002/2002-state-and-county/est02all.dat'
import pandas as pd
saipe02 = pd.read_csv(url3, sep='\s+', header=None, skiprows=1)

或者:

import numpy as np
saipe02 = np.fromfile(url3)

但它们不起作用。 只有此代码有效,但我无法放置任何分隔符将数据分隔到列中。我尝试了很多分隔符,但都不起作用:

saipe02=pd.read_table(url3,header=None)

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    对于我工作read_fwfdocs

    saipe02 = pd.read_fwf(url3, header=None)
    print (saipe02.head())
       0   1         2         3     ...       30  31            32         33
    0   0   0  34569951  33912173    ...      NaN  US  est02ALL.dat  29OCT2004
    1   1   0    679856    646828    ...      NaN  AL  est02ALL.dat  29OCT2004
    2   1   1      4795      3728    ...      NaN  AL  est02ALL.dat  29OCT2004
    3   1   3     16175     12558    ...      NaN  AL  est02ALL.dat  29OCT2004
    4   1   5      6152      4767    ...      NaN  AL  est02ALL.dat  29OCT2004
    
    [5 rows x 34 columns]
    

    【讨论】:

    • 非常感谢。我还有一个问题:saipe02 = pd.read_fwf(url3, header=None,dtype=object) medin02=saipe02.iloc[:,[0,1,20]] medin02.columns = ['state_fips', 'county_fips' ,'med_income_02'] medin02['state_fips']=medin02.loc[:,'state_fips'].apply(lambda x: '{0:0>2}'.format(x)) 它警告 Try using .loc[ row_indexer,col_indexer] = value 改成这个代码后: medin02['state_fips']=medin02['state_fips'].apply(lambda x: '{0:0>2}'.format(x)) 它仍然警告同样的事情。
    • 你需要copymedin02=saipe02.iloc[:,[0,1,20]].copy(),查看this 的解释。
    猜你喜欢
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多