如何使用 Pandas 读取以下(两列)数据(来自 .dat 文件)
TIME XGSM
2004 006 01 00 01 37 600 1
2004 006 01 00 02 32 800 5
2004 006 01 00 03 28 000 8
2004 006 01 00 04 23 200 11
2004 006 01 00 05 18 400 17
列分隔符(至少)为 2 个空格。
I tried
df = pd.read_table("test.dat", sep="\s+", usecols=['TIME', 'XGSM'])
print df
但它打印
TIME XGSM
2004 6
2004 6
2004 6
2004 6
2004 6
您可以将参数 usecols 与列的顺序一起使用:
import pandas as pd
from pandas.compat import StringIO
temp=u"""TIME XGSM
2004 006 01 00 01 37 600 1
2004 006 01 00 02 32 800 5
2004 006 01 00 03 28 000 8
2004 006 01 00 04 23 200 11
2004 006 01 00 05 18 400 17"""
#after testing replace StringIO(temp) to filename
df = pd.read_csv(StringIO(temp),
sep="\s+",
skiprows=1,
usecols=[0,7],
names=['TIME','XGSM'])
print (df)
TIME XGSM
0 2004 1
1 2004 5
2 2004 8
3 2004 11
4 2004 17
Edit:
您可以使用分隔符regex
- 2个及以上空格然后添加engine='python'
因为警告:
ParserWarning:回退到“python”引擎,因为“c”引擎不支持正则表达式分隔符(分隔符> 1个字符且不同于“\s+”被解释为正则表达式);您可以通过指定engine='python'来避免此警告。
import pandas as pd
from pandas.compat import StringIO
temp=u"""TIME XGSM
2004 006 01 00 01 37 600 1
2004 006 01 00 02 32 800 5
2004 006 01 00 03 28 000 8
2004 006 01 00 04 23 200 11
2004 006 01 00 05 18 400 17"""
#after testing replace StringIO(temp) to filename
df = pd.read_csv(StringIO(temp), sep=r'\s{2,}', engine='python')
print (df)
TIME XGSM
0 2004 006 01 00 01 37 600 1
1 2004 006 01 00 02 32 800 5
2 2004 006 01 00 03 28 000 8
3 2004 006 01 00 04 23 200 11
4 2004 006 01 00 05 18 400 17
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)