使用特定模式从txt文件创建Pandas DataFrame

使用特定模式从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 Name

0              Alabama        Aurburn...

1              Alabama        Florence...

2              Alabama        Jacksonville...

...

9              Alaska         Fairbanks...

10             Alaska         Arizona...

11             Alaska         Flagstaff...

熊猫数据帧


我不知道如何将基于“[编辑]”和“[数字]”或“(字符)”的文本文件拆分到相应的列中,并对每个区域名称重复国家名称。请任何人给我一个起点开始完成以下工作。


慕斯王
浏览 1495回答 3
3回答

千万里不及你

您可以首先将文件解析为元组: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          Area0   Alabama        Auburn1   Alabama      Florence2   Alabama  Jacksonville3   Alabama    Livingston4   Alabama    Montevallo5   Alabama          Troy6   Alabama    Tuscaloosa7   Alabama      Tuskegee8    Alaska     Fairbanks9   Arizona     Flagstaff10  Arizona         Tempe11  Arizona        Tucson

汪汪一只猫

假设您有以下DF:In [73]: dfOut[73]:                                                 text0                                       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]: dfOut[121]:                                                 text     State   Region Name0                                       Alabama[edit]   Alabama           NaN1                       Auburn (Auburn University)[1]   Alabama        Auburn2              Florence (University of North Alabama)   Alabama      Florence3     Jacksonville (Jacksonville State University)[2]   Alabama  Jacksonville4          Livingston (University of West Alabama)[2]   Alabama    Livingston5            Montevallo (University of Montevallo)[2]   Alabama    Montevallo6                           Troy (Troy University)[2]   Alabama          Troy7   Tuscaloosa (University of Alabama, Stillman Co...   Alabama    Tuscaloosa8                   Tuskegee (Tuskegee University)[5]   Alabama      Tuskegee9                                        Alaska[edit]    Alaska           NaN10      Fairbanks (University of Alaska Fairbanks)[2]    Alaska     Fairbanks11                                      Arizona[edit]   Arizona           NaN12         Flagstaff (Northern Arizona University)[6]   Arizona     Flagstaff13                   Tempe (Arizona State University)   Arizona         Tempe14                     Tucson (University of Arizona)   Arizona        Tucson15                                     Arkansas[edit]  Arkansas           NaNIn [122]: df = df.dropna()In [123]: dfOut[123]:                                                 text    State   Region Name1                       Auburn (Auburn University)[1]  Alabama        Auburn2              Florence (University of North Alabama)  Alabama      Florence3     Jacksonville (Jacksonville State University)[2]  Alabama  Jacksonville4          Livingston (University of West Alabama)[2]  Alabama    Livingston5            Montevallo (University of Montevallo)[2]  Alabama    Montevallo6                           Troy (Troy University)[2]  Alabama          Troy7   Tuscaloosa (University of Alabama, Stillman Co...  Alabama    Tuscaloosa8                   Tuskegee (Tuskegee University)[5]  Alabama      Tuskegee10      Fairbanks (University of Alaska Fairbanks)[2]   Alaska     Fairbanks12         Flagstaff (Northern Arizona University)[6]  Arizona     Flagstaff13                   Tempe (Arizona State University)  Arizona         Tempe14                     Tucson (University of Arizona)  Arizona        Tucson
打开App,查看更多内容
随时随地看视频慕课网APP