【问题标题】:GeoPandas dataFrame using iterrows() to fill a dictionary with column dataGeoPandas dataFrame 使用 iterrows() 用列数据填充字典
【发布时间】:2020-07-30 07:22:13
【问题描述】:

我正在使用 pandas DataFrame 来制作一个嵌套字典,其中包含一个包含名称的列。每个字典元素都是一个嵌套字典,每个嵌套字典的键都是来自 DataFrame 列的名称。

我正在使用这一行来填充字典:

for row, name in map_datafile.iterrows():         
    material_count[name._get_value(label='NAME')] = {}

由于某种原因,生成的字典仅包含 DataFrame 中包含的 586 个名称中的 579 个。出于这个原因,当我使用从该字典计算的新数据添加一列时,我收到此错误:

ValueError: Length of values does not match length of index

表示要插入DataFrame的值的长度与DataFrame不同。

我填错字典了吗?关于这个问题的任何建议都会很棒,我是 DataFrames 的新手。

【问题讨论】:

    标签: python-3.x dataframe dictionary geopandas


    【解决方案1】:

    .iterrows() 返回索引,然后返回行。
    此外,您可以使用不同的语法访问该值,而不是调用 ._get_value()
    所以你可以这样做:

    for idx, row in map_datafile.iterrows():         
        material_count[row['NAME']] = {}
    

    您也可以这样做(可能更快):

    material_count = {k:{} for k in map_datafile['NAME'].to_list()} 
    

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2019-01-05
      相关资源
      最近更新 更多