【发布时间】:2017-12-14 17:02:32
【问题描述】:
我正在尝试使用 pandas 的 read_csv 将 USDA 的 SR28 营养数据导入 python。
数据是这样描述的:
ASCII files are delimited. All fields are separated by carets (^) and text fields are
surrounded by tildes (~). A double caret (^^) or two carets and two tildes (~~) appear
when a field is null or blank.
我不知道如何处理双插入符号空值。许多行在一行中有五个或六个空白字段,导致我的行中出现“^^^^^^^^^^”。最后我的列太多了,把桌子扔了。
到目前为止,我已经尝试过:
data = pd.read_csv('.../NUT_DATA.txt', sep="^", na_values=["~~","^^"], header=None)
print(data[0:3])
从中我得到了不正确的列突破。我对正则表达式不够熟悉,无法尝试从分隔符中排除双插入符号,但即便如此,我也不知道如何区分胡萝卜是双精度的一部分还是下一列的定界符。
美国农业部原始数据样本:
~01001~^~268~^2999^0^^~4~^~NC~^~~^~~^^^^^^^~~^09/2015^
~01001~^~269~^0.06^0^^~4~^~NR~^~~^~~^^^^^^^~~^11/2002^
~01001~^~291~^0.0^0^^~4~^~~^~~^~~^^^^^^^~~^^
~01001~^~301~^24^17^0.789^~1~^~A~^~~^~~^7^19^30^4^22.021^26.496^~2, 3~^11/2002^
~01001~^~303~^0.02^18^0.011^~1~^~A~^~~^~~^7^0.00^0.15^7^-0.008^0.046^~2, 3~^03/2003^
~01001~^~304~^2^18^0.047^~1~^~A~^~~^~~^7^1^2^4^1.586^1.863^~2, 3~^03/2003^
~01001~^~305~^24^17^0.463^~1~^~A~^~~^~~^7^19^27^7^22.488^24.653^~2, 3~^03/2003^
【问题讨论】:
标签: python csv pandas import format