纯搬运工,原文链接【https://blog.csdn.net/liuyingying0418/article/details/103324137】
pandas读取txt文件
参考链接:pandas.read_csv
pandas.read_csv常用参数为:header, sep, name,其余参数待用到时再行补充
假如有个名为dates.txt的文件,其中内容如下:
20191128, 20191128
20191129, 20191129
20191130, 20191130
注意观察该文件没有标题行,类似表格的列名,那么就需要指定header=None,从而避免第一行被当成了标题行,用如下代码读取:
import pandas as pd
dates = pd.read_csv('dates.txt',header=None) # 获取日期数据
print(dates)
for ii in dates.index:
print(ii)
date_time = dates.loc[ii].values
print(date_time)
1
2
3
4
5
6
7
打印的结果如下:
0 1
0 20191128 20191128
1 20191129 20191129
2 20191130 20191130
0
[20191128 20191128]
1
[20191129 20191129]
2
[20191130 20191130]
1
2
3
4
5
6
7
8
9
10
结果中我们注意到,因为没有标题行,结果自动添加了0和1两个数作为名称,如果想要添加标题,可以用如下代码:
import pandas as pd
dates = pd.read_csv('dates.txt', names=['col1','col2'], header=None) # 获取日期数据
print(dates)
for ii in dates.index:
print(ii)
date_time = dates.loc[ii].values
print(date_time)
1
2
3
4
5
6
7
这样打印的结果就是:
col1 col2
0 20191128 20191128
1 20191129 20191129
2 20191130 20191130
0
[20191128 20191128]
1
[20191129 20191129]
2
[20191130 20191130]
1
2
3
4
5
6
7
8
9
10
每一行的结果都是一个list,可以通过列表的索引来指定取哪个值。
txt文件中数据是逗号分隔的,而pandas.read_csv默认使用的分隔符就是逗号,那如果是其他的符号呢,如空格,“-”等。这时sep就起到作用了。
假如dates.txt的文件内容如下:
20191128 20191128
20191129 20191129
20191130 20191130
执行如下代码:
import pandas as pd
dates = pd.read_csv('dates.txt', names=['col1','col2'], header=None, sep=" ") # 获取日期数据
print(dates)
for ii in dates.index:
print(ii)
date_time = dates.loc[ii].values
print(date_time)
1
2
3
4
5
6
7
执行结果如下:
col1 col2
0 20191128 20191128
1 20191129 20191129
2 20191130 20191130
0
[20191128 20191128]
1
[20191129 20191129]
2
[20191130 20191130]
1
2
3
4
5
6
7
8
9
10
我们指定sep为空格,则数据被正确的读取了出来。那如果不指定sep呢,结果如下:
col1 col2
0 20191128 20191128 NaN
1 20191129 20191129 NaN
2 20191130 20191130 NaN
0
['20191128 20191128' nan]
1
['20191129 20191129' nan]
2
['20191130 20191130' nan]
1
2
3
4
5
6
7
8
9
10
可以看到,数据并没有被正确分割,这说明在数据分隔符不是逗号的情况下,必须使用sep来指定分割方法。
版权声明:本文为CSDN博主「囊萤映雪的萤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuyingying0418/article/details/103324137