亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用特定模式從txt文件創建Pandas DataFrame

使用特定模式從txt文件創建Pandas DataFrame

慕斯王 2019-07-09 15:37:40
使用特定模式從txt文件創建Pandas DataFrame我需要基于以下結構的文本文件創建一個PandasDataFrame:Alabama[edit]Auburn (Auburn University)[1]Florence (University of North Alabama)Jacksonville (Jacksonville State University)[2]Livingston (University of West Alabama)[2]Montevallo (University of Montevallo)[2]Troy (Troy University)[2]Tuscaloosa (University of Alabama, Stillman College, Shelton State)[3][4]Tuskegee (Tuskegee University)[5]Alaska[edit]Fairbanks (University of Alaska Fairbanks)[2]Arizona[edit]Flagstaff (Northern Arizona University)[6]Tempe (Arizona State University)Tucson (University of Arizona)Arkansas[edit]帶有“[編輯]”的行是國家,行[數字]是區域。我需要將以下內容分開,然后對每個區域名稱重復國家名稱。Index          State          Region Name0              Alabama        Aurburn...1              Alabama        Florence...2              Alabama        Jacksonville......9              Alaska         Fairbanks...10             Alaska         Arizona...11             Alaska         Flagstaff...熊貓數據幀我不知道如何將基于“[編輯]”和“[數字]”或“(字符)”的文本文件拆分到相應的列中,并對每個區域名稱重復國家名稱。請任何人給我一個起點開始完成以下工作。
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

您可以首先將文件解析為元組:

import pandas as pdfrom collections import namedtupleItem = namedtuple('Item', 'state area')items = []with open('unis.txt') as f: 
    for line in f:
        l = line.rstrip('\n') 
        if l.endswith('[edit]'):
            state = l.rstrip('[edit]')
        else:            
            i = l.index(' (')
            area = l[:i]
            items.append(Item(state, area))df = pd.DataFrame.from_records(items, columns=['State', 'Area'])print df

產出:

      State          Area

0   Alabama        Auburn

1   Alabama      Florence

2   Alabama  Jacksonville

3   Alabama    Livingston

4   Alabama    Montevallo

5   Alabama          Troy

6   Alabama    Tuscaloosa

7   Alabama      Tuskegee

8    Alaska     Fairbanks

9   Arizona     Flagstaff

10  Arizona         Tempe

11  Arizona        Tucson


查看完整回答
反對 回復 2019-07-09
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

假設您有以下DF:


In [73]: df

Out[73]:

                                                 text

0                                       Alabama[edit]

1                       Auburn (Auburn University)[1]

2              Florence (University of North Alabama)

3     Jacksonville (Jacksonville State University)[2]

4          Livingston (University of West Alabama)[2]

5            Montevallo (University of Montevallo)[2]

6                           Troy (Troy University)[2]

7   Tuscaloosa (University of Alabama, Stillman Co...

8                   Tuskegee (Tuskegee University)[5]

9                                        Alaska[edit]

10      Fairbanks (University of Alaska Fairbanks)[2]

11                                      Arizona[edit]

12         Flagstaff (Northern Arizona University)[6]

13                   Tempe (Arizona State University)

14                     Tucson (University of Arizona)

15                                     Arkansas[edit]

你可以用Series.str.export()方法:


In [117]: df['State'] = df.loc[df.text.str.contains('[edit]', regex=False), 'text'].str.extract(r'(.*?)\[edit\]', expand=False)


In [118]: df['Region Name'] = df.loc[df.State.isnull(), 'text'].str.extract(r'(.*?)\s*[\(\[]+.*[\n]*', expand=False)


In [120]: df.State = df.State.ffill()


In [121]: df

Out[121]:

                                                 text     State   Region Name

0                                       Alabama[edit]   Alabama           NaN

1                       Auburn (Auburn University)[1]   Alabama        Auburn

2              Florence (University of North Alabama)   Alabama      Florence

3     Jacksonville (Jacksonville State University)[2]   Alabama  Jacksonville

4          Livingston (University of West Alabama)[2]   Alabama    Livingston

5            Montevallo (University of Montevallo)[2]   Alabama    Montevallo

6                           Troy (Troy University)[2]   Alabama          Troy

7   Tuscaloosa (University of Alabama, Stillman Co...   Alabama    Tuscaloosa

8                   Tuskegee (Tuskegee University)[5]   Alabama      Tuskegee

9                                        Alaska[edit]    Alaska           NaN

10      Fairbanks (University of Alaska Fairbanks)[2]    Alaska     Fairbanks

11                                      Arizona[edit]   Arizona           NaN

12         Flagstaff (Northern Arizona University)[6]   Arizona     Flagstaff

13                   Tempe (Arizona State University)   Arizona         Tempe

14                     Tucson (University of Arizona)   Arizona        Tucson

15                                     Arkansas[edit]  Arkansas           NaN


In [122]: df = df.dropna()


In [123]: df

Out[123]:

                                                 text    State   Region Name

1                       Auburn (Auburn University)[1]  Alabama        Auburn

2              Florence (University of North Alabama)  Alabama      Florence

3     Jacksonville (Jacksonville State University)[2]  Alabama  Jacksonville

4          Livingston (University of West Alabama)[2]  Alabama    Livingston

5            Montevallo (University of Montevallo)[2]  Alabama    Montevallo

6                           Troy (Troy University)[2]  Alabama          Troy

7   Tuscaloosa (University of Alabama, Stillman Co...  Alabama    Tuscaloosa

8                   Tuskegee (Tuskegee University)[5]  Alabama      Tuskegee

10      Fairbanks (University of Alaska Fairbanks)[2]   Alaska     Fairbanks

12         Flagstaff (Northern Arizona University)[6]  Arizona     Flagstaff

13                   Tempe (Arizona State University)  Arizona         Tempe

14                     Tucson (University of Arizona)  Arizona        Tucson


查看完整回答
反對 回復 2019-07-09
  • 3 回答
  • 0 關注
  • 1590 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號