簡體   English   中英

Python熊貓讀取文件,寫入Excel

[英]Python pandas read file, write to excel

我有一個像這樣的文件:

SOME_INFO_BEGIN
....
....
SOME_INFO_END
ACTUAL_DETAIL_BEGIN
TEST|1|23|abcd|
TEST|2|5|efgs|
TEST|3|124|zyz|       
ACTUAL_DETAIL_END  

我只閱讀ACTUAL_DETAILS_BEGIN和ACTUAL_DETAILS_END之間的行,它們始終以TEST開頭,但是我也只閱讀第3列中包含5的行。

下面的代碼對我有用,除了它獲得了所有3行-

with open(dir+filename, 'r') as filehandle:  
    filecontent = filehandle.readlines()
ifa = [k for k in filecontent if 'TEST' in k]
df = pd.DataFrame([sub.split("|") for sub in ifa])
df.columns= ['Type','Amt','Desc','Value1','Value2']
df1 = df[['Type','Desc']]
print(df1)
df1.to_excel (dir+"test.xlsx", index = False)

Q1。 有沒有更好的方法編寫此代碼? 例如。 如何關閉excel寫的文件句柄?

Q2。 我如何只接第二排?

沒什么可測試的,但是您可以迭代文件並延遲加載行。 也許這樣更有效:

rebuilt = []

with open(dir+filename, 'r') as infile:
    for row in infile:
        if row[:4] == 'TEST':
            rebuild.append(row.split('|'))

df = pd.DataFrame(rebuilt, columns= ['Type','Amt','Desc','Value1','Value2'])

無論如何, readlines()整個內容加載到內存中,因此您可以在讀取行時對其進行過濾。 您還需要在檢查條件之前對每一行進行拆分,因此根據列表切片進行檢查可能會更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM