首页 > 解决方案 > 当键嵌入列表时从列表创建字典

问题描述

我有一个美国相应州的大学城列表我想创建一个数据框,其中包含两列,一列用于“州”,另一列用于“区域名称”。数据框应如下所示:

    DataFrame( [ ["Alabama", "Auburn"], ["Alabama", "Troy"], 
    ["Alabama", "Tuscaloosa"], ["Alabama", "Tuskegee"], ["Alaska", 
    "Fairbanks"], ["Arizona", "Flagstaff"], ["Arizona", "Tempe"], ["Arizona", 
    "Tucson"] ], 
    columns=["State", "RegionName"]  )

问题是我有一个包含 States 和 RegionNames 的列表,对应的 RegionNames 在列表中的 State 名称之后,如下所示:

['Alabama',
 'Auburn','Troy','Tuscaloosa','Tuskegee',
'Alaska','Fairbanks',
 'Arizona','Flagstaff','Tempe','Tucson']

我一直在看例子,我目前坚持这一点。任何帮助将不胜感激!

标签: pythonpandas

解决方案


您可能需要在此处创建状态列表,然后使用ffillwithmask拆分原始单列数据框

df['RegionName']=df.State
df.State=df.State.where(df.State.isin(States)).ffill()
df=df.loc[df.State!=df.RegionName]
df
Out[80]: 
      State  RegionName
1   Alabama      Auburn
2   Alabama        Troy
3   Alabama  Tuscaloosa
4   Alabama    Tuskegee
6    Alaska   Fairbanks
8   Arizona   Flagstaff
9   Arizona       Tempe
10  Arizona      Tucson

数据输入

States=['Alabama','Alaska','Arizona'] 
l=['Alabama',
  'Auburn','Troy','Tuscaloosa','Tuskegee',
  'Alaska','Fairbanks',
  'Arizona','Flagstaff','Tempe','Tucson']
df=pd.DataFrame(l,columns=['State'])

推荐阅读