1. 程式人生 > 實用技巧 >python找到檔案特定內容的位置:pandas包的loc和index

python找到檔案特定內容的位置:pandas包的loc和index

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資料變為列表