date例子:
Price: 2450.000000, C: 618.000000, P: 0.500000, Diff: 617.500000, YSettle_C: 618.000000, YSettle_P: 0.500000
Price: 2500.000000, C: 568.000000, P: 0.500000, Diff: 567.500000, YSettle_C: 568.000000, YSettle_P: 0.500000
Price: 2550.000000, C: 518.500000, P: 1.000000, Diff: 517.500000, YSettle_C: 518.500000, YSettle_P: 1.000000
Price: 2600.000000, C: 469.500000, P: 2.000000, Diff: 467.500000, YSettle_C: 469.500000, YSettle_P: 2.000000
Price: 2650.000000, C: 421.500000, P: 3.500000, Diff: 418.000000, YSettle_C: 421.500000, YSettle_P: 3.500000
将以上数据保存为TXT文件在D盘,并命名为d.txt
import pandas as pd
import numpy as np
df_news = pd.read_table('D:\\d.txt',header = None)
使用以上代码读取该文件,然后使用下一句代码读取该文件的格式:
print (type(df_news))
输出结果为:
<class 'pandas.core.frame.DataFrame'>
可以看到是一个dataframe类型的文件。
工作需求是想读取每一行的price后面的数字,作为K;C后面的数字,作为C;P后面的数字,作为P。
但是由于读取出来的dataframe是一个5*1的数组,并且该数组没有列标签。
实现方法如下:
k=[]
c=[]
p=[]
for i in df_news[0]:
k.append(i[7:11])
c.append(i[23:30]) #取的是每一行中[x:y]的值
p.append(i[37:45])
r=pd.DataFrame()
r['k']=k
r['c']=c
r['p']=p
r=r.astype('float')
然后print即可输出list形式的数组,然后再进行进一步的运算即可。
补充一些解决这个问题走过的弯路:
- 尝试使用dict类型对元数据进行调取,但是该数据类型虽然看起来很像是dict类型,实际上使用type函数输出该数据类型为dataframe类型。如果使用dict将该数据转成字典类型,实际上是没有key的,字典里面只有一个值,就是所有的内容,所以该方法不可行。
- 尝试将原始数据中的字母全都删除,只留数字,然后使用split函数将该str(df_news)分割,然后给dataframe的column赋值。此处的问题是分割后输出的结果会有一些乱码的情况,不知道应该如何处理,所以该方法也行不通。