pandas包提供了數據讀取的方法,上一篇內容介紹了用pandas.read_csv函數讀取文件的選項。(鏈接https://www.cnblogs.com/liangxuran/p/13544390.html)
本文介紹讀取文件后如何鎖定特定內容的位置(行號)。
輸入文件
輸入文件是reskb0(注意pandas.read_csv不僅能讀取.csv文件,也可以讀取.txt文件,甚至沒有后綴名的文件)
該文件有三列數據,數據之間用空格分割,分別代表射線路徑中每個節點的緯(p)經(r)深(h)度。
不同射線之間用“0 0 0”間隔。部分數據截圖如下:
程序目標
為鎖定所有“0 0 0”字段的行號,以下程序提供了兩種方法.loc方法和.index方法
1 import pandas as pd 2 import numpy as np 3 4 file_in = "reskb0" #輸入文件 5 6 #使用panda中的read_csv讀取txt文件 7 #type(pd_data)=<class 'pandas.core.frame.DataFrame'> 8 pd_data=pd.read_csv(file_in,delim_whitespace=True,names='prh') 9 10 #方法1:使用.loc定位 11 pd_pos =pd_data.loc[(pd_data['p']==0)&(pd_data['r']==0)&(pd_data['h']==0)] 12 print('1st way:',pd_pos.shape,type(pd_pos)) 13 14 #方法2:使用.index定位 15 pd_loc =pd_data[(pd_data.p==0)&(pd_data.r==0)&(pd_data.h==0)].index 16 print('2nd way:',pd_loc.shape,type(pd_loc))
輸出結果
輸出結果表面,第一種方法用.loc返回的數據類型是pandas.core.frame.DataFrame,第二種方法用.index返回的數據類型是pandas.core.indexs.numeric.Int64Index
后期還可以用“list=pd_data.tolist()”將pandas數據變為列表