我正在尝试使用来自熊猫的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])
由此我得到了不正确的专栏突破。我对正则表达式不太熟悉,试图从分离器中排除双重插入符号,但即使这样,我也不知道如果胡萝卜是下一列的双重或分隔符的一部分,我将如何区分。< / p>
原始USDA数据样本:
~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^
答案 0 :(得分:2)
使用fillna
pd.read_csv('.../NUT_DATA.txt', sep='^', quotechar='~', header=None).fillna('')
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
0 1001 268 2999.00 0 4 NC 09/2015
1 1001 269 0.06 0 4 NR 11/2002
2 1001 291 0.00 0 4
3 1001 301 24.00 17 0.789 1 A 7 19 30 4 22.021 26.496 2, 3 11/2002
4 1001 303 0.02 18 0.011 1 A 7 0 0.15 7 -0.008 0.046 2, 3 03/2003
5 1001 304 2.00 18 0.047 1 A 7 1 2 4 1.586 1.863 2, 3 03/2003
6 1001 305 24.00 17 0.463 1 A 7 19 27 7 22.488 24.653 2, 3 03/2003
action
如果您愿意
<Dial>