iT邦幫忙

1

欄位依固定長度讀取

以長度來切欄位
Last Name欄位長度15
First Name欄位長度15
One 7
Two 7
Three 7

若是用pandas中的sep='\s+'來切的話,若姓名中有空格就可能會失敗
想請問python中是否有按字串長度來切分欄位的方法

資料如下

Last Name	   First Name     One    Two    Three  
Abdallah       Johnetta       70.3   68.3   69.2   
Ahle           Delmy          70.3   68.3   69.2   
Albares        Cammy          91.0   85.0   87.7   
Amigon         Minna          89.0   95.0   92.3   
Barfield       Stephaine      60.3   58.3   59.2   
Battle         James          90.7   86.7   88.5   
Benimadho      Elvera         60.3   58.3   59.2   
Blackwood      Kallie         70.3   68.3   69.2   
Bolognia       Brock          71.0   65.0   67.7   
Bowley         Emerson        80.0   80.0   80.0   
問一下是讀一個.txt檔案然後按長度切嗎
draguitar iT邦新手 5 級 ‧ 2020-04-27 10:25:06 檢舉
是的

2 個回答

3
sheep630459
iT邦新手 5 級 ‧ 2020-04-27 10:32:33
最佳解答

可以讀檔後先用長度切再放入dataframe

import pandas as pd

with open('filename.txt', 'r') as f:
    lines = f.readlines()
data = list(
    map(lambda x: [x[0:15], x[15:30], x[30:37], x[37:44], x[44:51]], lines)
)
column_names = data.pop(0)
df = pd.DataFrame(data, columns=column_names)
print(df)
draguitar iT邦新手 5 級 ‧ 2020-04-27 10:41:33 檢舉

太強大了,收下小弟膝蓋

draguitar iT邦新手 5 級 ‧ 2020-04-27 10:44:45 檢舉

再次感謝

4
一級屠豬士
iT邦大師 1 級 ‧ 2020-04-27 10:39:16

https://ithelp.ithome.com.tw/upload/images/20200427/20050647vx2E4p57p2.png

看更多先前的回應...收起先前的回應...
draguitar iT邦新手 5 級 ‧ 2020-04-27 10:41:11 檢舉

原來還有read_fwf這招!!感謝,學起來了

你最佳解答是不是選太快了,哈哈.

draguitar iT邦新手 5 級 ‧ 2020-04-27 10:44:16 檢舉

是,哈哈哈,抱歉!!好像改不了,上面是土炮,你的應該才是最佳解!!

draguitar iT邦新手 5 級 ‧ 2020-04-27 10:44:29 檢舉

都非常感謝你們!!

這個是還好啦,sheep630459的方法也很好啊.
很多物件封裝的高階處理方法,最終也是用基本的方法來組合的.
能解決問題,不見得要哪種才是最好啦.
上面是跟你開玩笑的.
另外你的基礎太差了,要做數據分析,還是先把基礎的底打好.
不然就是像你這樣,一些小問題,跳不過去,還是要來問基礎的東西,
來來回回,沒有比較快啦.

膜拜

/images/emoticon/emoticon12.gif

我要發表回答

立即登入回答