如何从一个列表中创建一个包含2列的数据框?

2024-10-06 08:54:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个列表中创建一个包含两列的数据框。 该列表包含:按顺序排列的州和地区名称 州是那些名字前面有“编辑”的州,其他的词是地区名称 例如,这里的州是阿拉巴马州,她的地区名称是奥本,佛罗伦萨。。。直到我们到达第二个州“阿拉斯加”。你知道吗

['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]

Tags: 数据in名称编辑列表名字edit地区
1条回答
网友
1楼 · 发布于 2024-10-06 08:54:57

对信息进行预处理以生成(state,region)名称的列表元组。使用它来构造数据帧

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

相关问题 更多 >