如何从列表创建2列的数据框?

时间:2019-01-06 16:39:07

标签: python pandas data-science

我想从列表中创建2列的数据框。 该列表包含:州和地区名称(按顺序) 各州的名称前带有“ edit”(编辑)字样,而其他字词则是地区名称 例如这里的州是阿拉巴马州,她的地区名称是佛罗伦萨的奥本,直到我们到达第二个州“阿拉斯加”。

['Alabama[edit]',
 'Auburn',
 'Florence',
 'Jacksonville',
 'Livingston',
 'Montevallo',
 'Troy',
 'Tuscaloosa',
 'Tuskegee',
 'Alaska[edit]',
 'Fairbanks',
 'Arizona[edit]',
 'Flagstaff',
 'Tempe',
 'Tucson',
 'Arkansas[edit]',
 'Arkadelphia',
....

数据框列将是州和地区名称。

enter image description here

这是我的代码:

    for i in range(len(list)):
    if 'edit' in list[i]:
        university['state'][i:]=re.sub('\[.+','',list[i])
    else:
        university['regionName'][i]=list[i]

1 个答案:

答案 0 :(得分:1)

对信息进行预处理,以创建具有(state,region)个名称的列表元组。使用它来构造DataFrame

names =  ['Alabama[edit]',
          'Auburn',
          'Florence',
          'Jacksonville',
          'Livingston',
          'Montevallo',
          'Troy',
          'Tuscaloosa',
          'Tuskegee',
          'Alaska[edit]',
          'Fairbanks',
          'Arizona[edit]',
          'Flagstaff',
          'Tempe',
          'Tucson',
          'Arkansas[edit]',
          'Arkadelphia']


data = []
state = None
for name in names:
    name = name.strip()
    if name.endswith('[edit]'):
        state = name[:-6]
        continue
    if not state:     # In case the first name of the list is not a state
        state = 'Unknown'
    data.append((state,name))

df = pd.DataFrame(data)

>>> df
           0             1
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
12  Arkansas   Arkadelphia