2017-04-11 17 views
-2

這是我的文本數據,我想讀取python中的「APR」列,並執行 條件語句。在我的情況下,如果APR的價值是從閱讀文本數據的列,並在python中執行條件表達式

高於30打印
15:46:06 PROJECT STARTED NOW 
15:46:06 JAN FEB MARCH APR MAY JUNE JULY AUG SEP OCT NOV 
15:46:06 A— 1 00 22.1 22.1 0 3 0 0 0 0 23 
15:46:06 B— 2 01 21.2 21.2 0 0 0 0 0 0 12 
15:46:06 C— 3 02 20.1 20.1 0 0 0 0 0 0 26 
15:46:06 D— 4 03 19.8 19.8 0 0 0 0 0 0 25 
15:46:06 E— 5 04 20.9 30.0 0 0 0 0 0 0 15 
15:46:06 F— 6 05 19.8 19.8 0 0 0 0 0 0 23 
15:46:06 G— 7 06 21.6 21.6 0 0 0 0 0 0 16 
15:46:06 H— 8 07 20.9 20.9 0 0 0 0 0 0 34 
15:46:06 I— 9 08 20.9 20.9 0 0 0 0 0 0 27 
15:46:06 END OF DISPLAY 
15:46:06 ENDS 

我的輸出應打印如果「APR」欄值高於30像下面

15:46:06 JAN FEB MARCH APR MAY JUNE JULY AUG SEP OCT NOV 
15:46:06 E— 5 04 20.9 30.0 0 0 0 0 0 0 15 
15:46:06 F— 6 05 19.8 19.8 0 0 0 0 0 0 23 
15:46:06 G— 7 06 21.6 21.6 0 0 0 0 0 0 16 
15:46:06 H— 8 07 20.9 20.9 0 0 0 0 0 0 34 
15:46:06 I— 9 08 20.9 20.9 0 0 0 0 0 0 27 
15:46:06 END OF DISPLAY 
+4

你有任何問題要跟這個故事一起去嗎? – timgeb

+0

嗨Timgeb.just檢查與Dth列的值和更高,然後30打印upto結束的顯示行 – Venkatesan

回答

1

首先打開該文件,PFAFEND OF DISPLAY之間的內容保存到一個pandas DataFrame(以防萬一,你需要做你的數據的其他操作。

然後,你遍歷這個DataFram即,當D列的行> 30保存索引,並使用break

最後一步是使用array slicing來顯示你所有的數據幀開始,你以前保存的索引退出for循環。

import pandas as pd 

CREATE_TAB_MODE = 0 
DF_INDEX = None 
df_columns = None 
df_list = [] 

with open('your_file.txt') as f: 
    for line in f: 
     if line.startswith('PFAF'): 
     CREATE_TAB_MODE = 1 
     elif line.startswith('END OF DISPLAY'): 
     break 
     elif CREATE_TAB_MODE: 
     if df_columns is None: 
      df_columns = line.strip().split() 
     else: 
      df_list.append(line.strip().split()) 


df = pd.DataFrame(df_list, columns=df_columns) 

for index, row in df.iterrows(): 
    if int(row['D']) > 30: 
    DF_INDEX = index 
    break 

print(df[DF_INDEX:]) 
+1

非常感謝你最大:-)它工作正常 – Venkatesan

+0

我確實有你的代碼的另一個查詢,你能幫我嗎? – Venkatesan

+0

我大概可以!如果這不是一個小小的改變,請用你已經生成的代碼發佈另一個問題,以及要做什麼。如果您的問題經過了足夠的測試和寫入,我相信比我更好的編碼人員可以以更恰當的方式回答問題! –

相關問題