【问题标题】:How to extract specific keys for location to dataframe如何将位置的特定键提取到数据框
【发布时间】:2022-01-23 12:33:16
【问题描述】:

我有一个看起来像这样的小数据框:

place id,    geometry,
AXRT      {'location': {'lat': 51.112278, 'lng': 20.747889}}}}

我想达到这样的效果:

我试过了:

df=pd.DataFrame(data, columns=['geometry'])
df1 = pd.DataFrame({'Geometry': np.array([subdct['x'] for subdct in df], dtype='datetime64[s]'),
                   'y': [subdct['y'] for subdct in df]})

但我得到一个错误:

TypeError: string indices must be integers

而且无法通过。

任何帮助将不胜感激。

【问题讨论】:

    标签: python pandas dictionary multidimensional-array key


    【解决方案1】:

    IIUC:

    df = df[['place id']].join(df['location'].apply(pd.Series)['location'].apply(pd.Series))
    print(df)
    

    OUTPUT

      place id        lat        lng
    0     AXRT  51.112278  20.747889
    

    SETUP

    df = pd.DataFrame(data={'place id':['AXRT'], 'location':[{'location': {'lat': 51.112278, 'lng': 20.747889}}]})
    

    【讨论】:

    • 非常感谢您的回答。这可行,但是我想知道如果设置会略有不同,例如
    • df = pd.DataFrame(data={'place id':['AXRT'], 'geometry':[{'location': {'lat': 51.112278, 'lng': 20.747889 }, 'viewport': {'northeast': {'lat': 51.11367217989272, 'lng': 20.74911952989272}, 'southwest': {'lat': 51.11097252010727, 'lng': 20.74641987010727}}}] >
    • pandas 似乎无法识别“位置”键。正常吗?
    • 对于更新的数据框使用df = df[['place id']].join(df['geometry'].apply(pd.Series)['location'].apply(pd.Series))
    【解决方案2】:

    您可以使用apply(pd.Series) 来扩展字典。

    df = pd.DataFrame({'place id': 'AXRT', 'geometry':{'location': {'lat': 51.112278, 'lng': 20.747889}}})
    out = df[['place id']].merge(df['geometry'].apply(pd.Series), right_index=True, left_index=True).reset_index(drop=True)
    

    输出:

      place id        lat        lng
    0     AXRT  51.112278  20.747889
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-29
      • 2019-08-12
      • 2023-04-04
      • 2019-08-22
      • 2018-05-03
      • 2013-01-27
      • 2020-04-17
      • 2022-01-27
      相关资源
      最近更新 更多