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數據變為列表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM