首页 > 解决方案 > 如何创建具有不同行长的多列的新 python DataFrame?

问题描述

我正在组织一个新的数据框,以便轻松地将数据插入到 Bokeh 可视化代码片段中。我认为我的问题是由于行长不同,但我不确定。

下面,我按国家名称的字母顺序组织了数据集,并创建了各个国家的字母列表。new_data.tail()虽然津巴布韦排在最后,但有 80336 行,因此进行了排序。

    df_ind_data = pd.DataFrame(ind_data)
    new_data = df_ind_data.sort_values(by=['country'])
    new_data = new_data.reset_index(drop=True)
    country_list = list(ind_data['country'])
    new_country_set = sorted(set(country_list))

我的目标是创建一个新的 DataFrame,其中包含 76 个列(国家名称),每个国家列下方的行中都有特定的“信任”数据。

df = pd.DataFrame()
for country in new_country_set:
    pink = new_data.loc[(new_data['country'] == country)]
    df[country] = pink.trust

在这里输出

如您所见,第一列之后的其余列的数据不包含在内。我相信这是因为每个国家的“信任”数据行数不同。虽然第一列有 1000 行,但有些列的数据点多达 2500 个,少则 500 个。

我尝试了几种不同的方法来指定“df”中的行数,但无济于事。

我拥有的可视化代码片段对模板数据使用了相同的精确数据结构,这就是我尝试将其放入数据框中的原因。另外,我做不到,所以我想知道该怎么做。

是的,我可以把它放在字典里,但我想把它放在数据框中。

标签: pythonpandasdataframe

解决方案


添加新列时应使用combine_first以便扩展数据框索引。代替

df[country] = pink.trust

你应该使用

df = pink.trust.combine_first(df)

这可确保您的索引始终是所有添加列的联合。


推荐阅读